質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

4775閲覧

Ruby ブロックの書き方について

mamezou

総合スコア98

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2014/06/15 09:33

ブロックの開始と終了は波かっこの代わりにも
doとendでもできますが、
これはどのように使いわけて書けばいいのでしょうか?

これは好みの、問題でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mamezou

2014/09/02 01:49

とても分かりやすい説明で、参考になりました。 回答ありがとうございました。
guest

0

私の場合ですが、通常ブロックが1行に収まるのであれば{}を使います。

収まらないときは、doとendを使うというようにわけていますね。

投稿2014/06/25 06:54

poppo23

総合スコア163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

個人で書いている場合は好みの問題ですが、複数人での開発の場合はスタイルガイドに従った方がいいと思います。
例えば GitHub のスタイルガイドでは 「1 行で収まれば {...}、複数行は do...end」 となっています。 Rails も do...end です。

私個人の好みは do...end は使わず、{...} のみです。
制御文で end が出てくるので、コードブロックでは {...} を使った方が適度に混ざって読みやすいと思います。

投稿2014/07/18 03:50

yohshiy

総合スコア863

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mamezou

2014/09/02 01:52

回答ありがとうございます。 なるほど。複数人で開発する場合はスタイルガイドに従ったほうがよいのですね! 色々と参考になりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問