В курса и повечето ruby свят do/end
се пише, когато блокът е на повече от един ред.
[1, 2, 3, 4].each { |n| puts "n = #{n}" }
[1, 2, 3, 4].each do |n|
# some random code
puts "n = #{n}"
end
[1, 2, 3, 4].map { |n| n**10 }
[1, 2, 3, 4].map do |n|
# some random code
n**10
end
Но е възможен и друг подход, където {}
се използва, когато главната цел на блока е да върне резултат и do/end
, когато целта на блока са някакви странични ефекти.
[1, 2, 3, 4].each do |n| puts "n = #{n}" end
[1, 2, 3, 4].each do |n|
# some random code
puts "n = #{n}"
end
[1, 2, 3, 4].map { |n| n**10 }
[1, 2, 3, 4].map { |n|
# some random code
n**10
}