yield
rubyの勉強
本で説明をみると良くわからなかったけれども、実際にプログラムを書いてみると解ったような気がする。様はブロックを接続して使用するメソッドの定義でyieldの引数が、ブロック内の||で囲んだ変数に渡されるということなんだろうな。
yieldの引数は、||内の変数の数と対応させる必要があって、メソッド内で実行されたyieldの数だけブロックに値が渡されるということ。
class Test def initialize @ary = [ 0, 1, 2, 3, 4, 5, 6, 7, 8] end def one_two yield 1 yield 2 end def each @ary.length.times do |i| yield @ary[i] end end def each_even @ary.length.times do |i| yield @ary[i] if (i % 2) == 0 end end def each_reverse (@ary.length - 1).downto(0) do |i| yield @ary[i] end end def each2 i = 0 while i < @ary.length yield @ary[i],@ary[i + 1] i += 2 end end end test = Test.new test.one_two{|i| print i.to_s} #=> 12 test.each{|i| print i.to_s} #=> 012345678 test.each_even{|i| print i.to_s} #=> 02468 test.each_reverse{|i| print i.to_s} #=> 876543210 test.each2{|x,y| print "#{x.to_s}#{y.to_s} "} #=> 01 23 45 67 8