yield

さっき風呂に入りながら「たのしいRuby」読んでてようやく意味が分かった。
(あと回しにしてそのままだったんだけど・・・・)

メソッド定義の中のyieldは、
定義しているメソッドに与えられたブロックを実行します。

なるほど。勝手に「yieldはなんか値を返すもの」的に想像してたけど
全然違うじゃん (´・ω・`)ショボーン

class YieldTest
  def initialize
    @list = [0,1,2,3,4,5,6,7,8,9]
  end
  #
  # kurikaeshi メソッドに与えられたブロック
  # {|item|
  #   puts item
  # }
  # を実行する。
  # itemには yieldに与えた引数が設定される。
  # ここでは、
  # @listの要素の数だけ要素を引数にブロックを呼び出している。
  #
  def kurikaeshi
    @list.each{|item|
      yield(item)
    }
  end
end

test = YieldTest.new
test.kurikaeshi{|item|
  puts item
}

- 結果 -

0
1
2
3
4
5
6
7
8
9


(`・ω・´) レベルアップ!