• 締切済み

Rubyでblockのdo...endと{}の違い

Rubyで block の書き方として、 do ... end で括るときと、中括弧 {} で括るときがありますが、どのように使い分けるのがよいでしょうか 文献を調べた感じですと、「do endより{}の方が結合が強いという違いがある」だそうです 【例】 p [1, 2, 3].map do |item| item * 2 end # => [1, 2, 3] p [1, 2, 3].map {|item| item * 2 } # => [2, 4, 6] ただし、この違いによって、結果が変わるようなコードは好ましくなく、即刻やめるべきだとも書いてありました みなさんはどのように使い分けていますか?

みんなの回答

回答No.2

おおむね、一行で収まる処理は{}で書いて、複数行に渡る記述の場合はdo~endで文化として根付いている感じですね

lefty17
質問者

お礼

そうですね。やはりそういう使い分けが多いんでしょうか

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

メソッドチェーンの中で使うときは、{ } で、do の後で改行してendが別の行にするときは、do/end ですね。 そういう使い分けをよく聞きますし、結合度の強いメソッドチェーンを { } で書いておけば、おおむね問題は起こらないでしょう。 常に { } だけを使うというのもありだと思います。

lefty17
質問者

お礼

なるほど。 {} だけを使うという方法もありますね

関連するQ&A