ブロックの開始と終了は波かっこの代わりにも
doとendでもできますが、
これはどのように使いわけて書けばいいのでしょうか?
これは好みの、問題でしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
{ } と do end では、結合の優先度が違いますので、同じ意味ではありません。&& と and の違いみたいな。
特に、メソッド引数を囲う暗黙の括弧との優先度に注意。
lang
1p (1..3).map{|x| x.to_s} # p の引数は(1..3).map{|x| x.to_s}全体 2=> ["1", "2", "3"] 3 4p (1..3).map do |x| x.to_s end # p の引数は (1..3).mapで、ブロックはpにかかる(pはブロックを使わないが) 5=> #<Enumerator: 1..3:map>
後者は、下記のようにメソッド引数を囲う括弧を明示すれば誤解がないです。
lang
1p( (1..3).map ) do |x| x.to_s end # 上の例はこう解釈される 2=> #<Enumerator: 1..3:map> 3 4p( (1..3).map do |x| x.to_s end ) # { } と同じ結果 5=> ["1", "2", "3"]
「1 行で収まれば {...}、複数行は do...end」 という使い分けをしていれば、あまりこの優先度の違いではまることは無いと思います。絶対ではありませんが。
投稿2014/08/28 01:46
総合スコア84559
0
個人で書いている場合は好みの問題ですが、複数人での開発の場合はスタイルガイドに従った方がいいと思います。
例えば GitHub のスタイルガイドでは 「1 行で収まれば {...}、複数行は do...end」 となっています。 Rails も do...end です。
私個人の好みは do...end は使わず、{...} のみです。
制御文で end が出てくるので、コードブロックでは {...} を使った方が適度に混ざって読みやすいと思います。
投稿2014/07/18 03:50
総合スコア863
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/09/02 01:49