- 締切済み
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] ただし、この違いによって、結果が変わるようなコードは好ましくなく、即刻やめるべきだとも書いてありました みなさんはどのように使い分けていますか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- m_matsubara
- ベストアンサー率48% (80/166)
回答No.2
おおむね、一行で収まる処理は{}で書いて、複数行に渡る記述の場合はdo~endで文化として根付いている感じですね
- notnot
- ベストアンサー率47% (4900/10358)
回答No.1
メソッドチェーンの中で使うときは、{ } で、do の後で改行してendが別の行にするときは、do/end ですね。 そういう使い分けをよく聞きますし、結合度の強いメソッドチェーンを { } で書いておけば、おおむね問題は起こらないでしょう。 常に { } だけを使うというのもありだと思います。
質問者
お礼
なるほど。 {} だけを使うという方法もありますね
お礼
そうですね。やはりそういう使い分けが多いんでしょうか