Rubyを使っていて、メソッドにブロックを渡す方法にタイトルのような2種類ある理由がいまいちわからなかった。そして私はそれを放置し、今まで好みだけで使い分けてきましたが、人に聞かれてわからなかったので調べてみました。 ・http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/18592 do .. end, { .. } の違いは本当にやっかいでしたよね。バイブルには間に合わなかったようですが、現在の Ruby では do .. end でも戻り値の代入ができるようになりましたので、両者の違いは簡単になっています。 foo a, b do ... end # foo にブロックが引き渡されます。 foo a, b { ... } # b にブロックが引き渡されます。 さらには、この違いを覚えるのも結構面倒なので、メソッド名の後