Ruby初心者のために、なぜメソッド定義内でyield self
に有益なのか、私には分かりません。私はこの機能を多くのチュートリアルで役立ててくれました。それは私には完璧な意味があります。どうすればが動作しますが、私は理解できません。なぜあなたはこれを使ったでしょうか?なぜ `yield self`が役立つのですか?
のは、私は次のコードがあるとしましょう:
class Dog
attr_accessor :breed
def initialize
@breed = "Westie"
end
def bark
puts "Woof!"
yield self if block_given?
end
end
fido = Dog.new
fido.bark do |d|
puts "Bark, bark, bark!"
puts d.breed
end
はそうそう、
yield self
を経て、私は今、私はあまりにも得ていたブロック内
Dog
クラスのインスタンスへのアクセスを持っています。
しかし、私がyield self
ではない場合でも、私はまだそのインスタンスにアクセスするでしょうか?つまり、以下のコードは正確にはのコードと同じではありませんか?
class Dog
attr_accessor :breed
def initialize
@breed = "Westie"
end
def bark
puts "Woof!"
yield
end
end
fido = Dog.new
fido.bark do
puts "Bark, bark, bark!"
puts fido.breed
end
2番目のコードサンプルでは、私はyield self
を呼び出していないことに注意してください。
私は明らかにこのユーティリティを欠いています。
ああ、私は匿名インスタンスのコンテキスト内で 'yield self'を考慮しませんでした。それは私にとって意味のあるユーティリティです。ありがとう!あなたの2番目の例は私にはあまり明らかではありませんが、私はまだRubyにはあまりにも新しかったからです。私はもう少し考えなければならないでしょう。 :)助けを感謝します。 – filmnut