1. ホーム
  2. ruby

[解決済み] doブロックと中括弧{}の使い分け

2022-09-16 22:42:46

質問

Rubyの初心者です、初心者用の手袋をしてください。

次の2つのスニペットの間に何か違い(不明瞭または実用的な)がありますか?

my_array = [:uno, :dos, :tres]
my_array.each { |item| 
    puts item
}

my_array = [:uno, :dos, :tres]
my_array.each do |item| 
    puts item
end

brace構文を使えば、ブロックを1行に配置できることは理解しているのですが

my_array.each { |item| puts item }

という構文がありますが、それ以外で、どちらかの構文を使うべき説得力のある理由はありますか?

どのように解決するのですか?

Rubyのクックブック では、ブラケット構文の優先順位は do..end

ブラケット構文 よりも優先順位が高いことに注意してください。 do...end構文よりも優先されることに留意してください。次のようなコードを考えてみましょう。 の2つのコードを考えてみましょう。

1.upto 3 do |x|
  puts x
end

1.upto 3 { |x| puts x }
# SyntaxError: compile error

2番目の例は、括弧が使われているときのみ機能します。 1.upto(3) { |x| puts x }