Rubyでブロック作るときの{}とdo endは何が違う?
Rubyでブロック作るときの{}とdo endは何が違う?
Rubyでブロックを作る時に以下のように2通りでブロックを作成することができます。
numbers.each do|n| sum+=n end
numbers.each{ |n|
sum+=n
}
この違いは?
・改行を含む長いブロックを書く場合はdo...end ・1行でコンパクトに書きたいときは{}
参考本:伊藤 淳一. プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで
結合度が違う
do...endよりも{}のほうが結合度が強い、という点に注意が必要です。 この結合度が強いという思わぬバグを生むことがあります。 例)
a.delete100{'hoge'} =>SyntaxError
なぜならこう判断されている
100{'hoge'}