Как этот метод использует свой собственный метод в ruby? - PullRequest
2 голосов
/ 23 февраля 2012

Я видел этот пример о последовательности Фибоначчи, затем проверил его в IRB.Я надеялся, что кто-то может сломать это для меня и показать, как он использует тот же метод внутри метода, который определяется.

Ответы [ 2 ]

6 голосов
/ 23 февраля 2012

Когда вы определяете метод с помощью def whatever(...), вы делаете две вещи: создаете метод и присваиваете его указанному слоту метода.

Когда вы вызываете метод в Ruby, он будет искать его в локальной области видимости; внутри метода fib, который включает текущий объект, для которого определено fib. Таким образом, он находит текущее определение fib и вызывает его.

Я упоминаю текущую часть, потому что если метод fib переопределит fib для текущего объекта внутри себя, будет использовано новое определение, а не старое определение.

То есть: он будет динамически находить код, связанный с name каждый раз, когда имя вызывается.

3 голосов
/ 23 февраля 2012

Это называется рекурсия ... Это шаблон, который иногда возникает в программировании ... Если вы хотите программировать, это инструмент / процесс, который вы должны изучить.Вместо того, чтобы отрыгивать здесь то, что уже есть, просто прочитайте то, что есть в Википедии ... В которой содержится объяснение последовательности Фибоначчи, которая является дефакто примером рекурсии.

...