Есть ли разница, если вы определяете Foo с помощью instance_eval:.,.
class Foo
def initialize(&block)
instance_eval(&block) if block_given?
end
end
., или с "yield self":
class Foo
def initialize
yield self if block_given?
end
end
В любом случае вы можете сделать это:
x = Foo.new { def foo; 'foo'; end }
x.foo
Итак, yield self
'означает, что блок после Foo.new всегда оценивается в контексте класса Foo.
Правильно ли это?