2012/01/02

ブロックへの引数渡し

プログラミング言語 Rubyより

引数が1個のブロックを宣言すれば、多重代入のルールにより、2個の値が自動的に配列にまとめられるはずだと予想される。しかし、現実にはそのようには動作しないのだ。

プログラミング言語 Ruby 第2版 150ページ ブロックへの引数渡し
def tow; yield 1,2; end # 2個の値を渡すイテレータ
two {|x| p x} # Ruby 1.8: 警告を発して[1,2]を出力
two {|x| p x} # Ruby 1.9: 警告なしで1を出力
two {|*x| p x} # 両バージョン: 警告なしで[1,2]を出力
two {|x,| p x} # 両バージョン: 警告なしで1を出力