ブロック付きメソッド呼び出しを記述する際には { ... }
あるいは do ... end
を使うと思います。
しかしこれらは厳密にいうと異なります。
その違いは 結合強度 です。
{ ... }
の場合
some_method other_method { ... }
この式は次のように解釈されます。
some_method(other_method{ ... })
do ... end
の場合
some_method other_method do ... end
この式は次のように解釈されます。
some_method(other_method) do ... end
使い分けるべきシーン
{ ... }
を使うべき
- メソッドの戻り値を利用する場合
- メソッドチェーン(a.foo{}.bar{}.baz{})をする場合
- 1行で記述できる場合
do ... end
を使うべき
- 上記以外の場合、基本こちらを使うべき。
Ref.
- 初めてのRuby