воскресенье, 19 мая 2013 г.

Отличие между def и define_method

Надо все же записать, а то сам регулярно на эти грабли наступаю...

Важное отличие между “def” и “define_method” в том, что “def” формирует свой собственный, полностью автономный контекст, а “define_method” работает с замыканием. Т.е. в примере:

a = 1

define_singleton_method :alpha do
  p a
end

def beta
  p a
end

alpha
beta

вызов “alpha” отработает нормально, а вот при вызове “beta” Ruby доложит о неопределенной переменной.

Комментариев нет:

Отправить комментарий