Я изучаю рубин в данный момент. Я пытаюсь понять, как работают замыкания, и как они отличаются от функций. Я полностью отдаю себе отчет в том, что замыкания должны быть реализованы через proc или лямбда.Понимание вложенных функций Ruby
Я пытаюсь получить глубокое понимание рубина. Таким образом, я проверяю все виды неортодоксального кода. Я пытаюсь понять, почему строка 3 работает, а строка 5 - ошибка.
x=123
def b(x)
p x
def a(u)
p x # why is this an error?!?!?
end
a 4
end
b 1
- Если не может получить доступ к параметрам Б, почему она не получить доступ к глобальной х = 123?
- Почему это работает, если я явно использую строки изменения 1 & 5 глобальному «$ x»?
- Почему это работает, если я использую лямбду явно?
Это чисто учебное упражнение, я делаю это, чтобы понять, что происходит под капотом.
Из любопытства, что произойдет, если b - метод, принадлежащий классу? будет также принадлежать этому классу? – eshalev
@eshalev: да. (но 'a' будет определяться только после запуска' b' в первый раз (для определения метода необходимо выполнить оператор 'def')) – newacct