Ist 'Ausbeute selbst" das gleiche wie instance_eval?

Ist, gibt es einen Unterschied, wenn Sie definieren Foo mit instance_eval: . . .

class Foo
    def initialize(&block)
      instance_eval(&block) if block_given?
    end
  end

. . . oder mit 'yield self':

class Foo
  def initialize
    yield self if block_given?
  end
end

In jedem Fall, dass Sie dies tun können:

x = Foo.new { def foo; 'foo'; end }
x.foo 

So 'yield self' bedeutet, dass der block nach Foo.neues wird immer ausgewertet, die im Rahmen der Foo-Klasse.

Ist das richtig?

InformationsquelleAutor uzo | 2009-09-15
Schreibe einen Kommentar