Alan Storm Alan Storm - 1 year ago 100
Ruby Question

Using do block vs brackets {}

New to ruby, put on your newbie gloves.

Is there any difference (obscure or practical) between the following two snippets?

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

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

I realize the bracket syntax would allow you to place the block on one line

my_array.each { |item| puts item }

but outside of that are there any compelling reasons to use one syntax over the other?

Answer Source

Ruby cookbook says bracket syntax has higher precedence order than do..end

Keep in mind that the bracket syntax has a higher precedence than the do..end syntax. Consider the following two snippets of code:

1.upto 3 do |x|
  puts x

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

Second example only works when parentheses is used, 1.upto(3) { |x| puts x }

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download