В новинку для рубина, поставившего Ваши перчатки новичка.
Есть ли какое-либо различие (неясно или практично) между следующими двумя отрывками?
my_array = [:uno, :dos, :tres]
my_array.each { |item|
puts item
}
my_array = [:uno, :dos, :tres]
my_array.each do |item|
puts item
end
Я понимаю, что синтаксис фигурной скобки позволил бы Вам помещать блок в одну строку
my_array.each { |item| puts item }
но за пределами этого там какие-либо неопровержимые доводы для использования одного синтаксиса по другому?
Ruby Cookbook говорит, что синтаксис кронштейна имеет более высокий уровень приоритета, чем DOUPLE.
Имейте в виду, что синтаксис кронштейна имеет более высокий приоритет, чем Делать ... День синтаксис. Рассмотреть следующее Два фрагмента кода:
1.upto 3 do |x|
puts x
end
1.upto 3 { |x| puts x }
# SyntaxError: compile error
Второй пример работает только, когда используются скобки, 1.
1.
1. (3) {| x | ставит х}
Как правило, Конвенция состоит в том, чтобы использовать {}
, когда вы выполняете небольшую работу, например, вызов метода или сравнение и т. Д. Так что это имеет смысл
some_collection.each { |element| puts element }
Но если у вас есть слегка сложная логика, которая переходит к нескольким строкам, то используйте .. end
Как:
1.upto(10) do |x|
add_some_num = x + rand(10)
puts '*' * add_some_num
end
в основном, он входит в нее, если ваша логика блокировки идет в несколько строк и не может Быть установленным на той же линии, а затем используйте .. end
И если ваша логика блока проста и просто простая / одна строка кода, затем используйте {}
.