私はプログラミングRubyの式の宣言を読んでいます。<<なぜメソッドがselfを返すのがメソッド連鎖に役立つのか?
class ScoreKeeper
def initialize
@total_score = @count = 0
end
def <<(score)
@total_score += score
@count += 1
self
end
def average
fail "No scores" if @count.zero?
Float(@total_score)/@count
end
end
scores = ScoreKeeper.new
scores << 10 << 20 << 40
puts "Average = #{scores.average}"
これは
Average = 23.333333333333332
を生産する本は、このコード< <方法を明示的 戻っ自己で微妙があること
注意をexpains。スコア オブジェクトを返します< <への各呼び出しは、あなたは、新しいスコアを渡し、再び< <を呼び出すことができますのでこの方法はラインに スコア< < 40をチェーンできるようにこれを行います。
私はまだ方法連鎖を許可する理由を理解していません。
誰かが助けることができますか?
あなたは 'デフ<<' 'からそのself'を削除しようとしたことがありますか? – Stefan