我看到了这个关于斐波那契数列的例子,然后在 IRB 中测试了它。希望有人能为我分解它并向我展示它如何在正在定义的方法中使用相同的方法。
def fib(n)
return n if (0..1).include? n
fib(n-1) + fib(n-2) if n > 1
end
最佳答案
当您使用 def whatever(...)
定义一个方法时,您正在做两件事:创建一个方法,并将其分配给指定的方法槽。
当您在 Ruby 中调用一个方法时,它会在本地范围内查找该方法; fib
方法内部包含定义了 fib
的当前对象。因此,它会找到 fib
的当前定义并调用它。
我提到当前部分是因为如果 fib
方法在其内部的当前对象上重新定义 fib
,将使用新定义,而不是旧定义。
也就是说:每次调用name时,它都会动态找到与name关联的代码。
关于ruby - 这个方法在ruby中如何使用自己的方法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9406344/