В дополнение к другим ответам может быть различие , если Ваш i
не int
. В C++ , если это - объект класса, которому перегрузили операторы ++()
и ++(int)
, тогда это может иметь значение, и возможно побочный эффект. Производительность ++i
должна быть лучше в этом случае (иждивенец на реализации).
it's a parser problem. try this
named_scope :admin, (lambda do |company_id|
{:conditions => ['company_id = ?', company_id]}
end)
Я думаю, проблема может быть связана с разницей в приоритете между {...}
и do ... end
Есть некоторое обсуждение SO здесь
Я думаю, что присвоение лямбды переменной (которая будет Proc) может быть выполнено с помощью do
... end
:
my_proc = lambda do
puts "did it"
end
my_proc.call #=> did it
It's something related to precedence as I can tell
1.upto 3 do # No parentheses, block delimited with do/end
|x| puts x
end
1.upto 3 {|x| puts x } # Syntax Error: trying to pass a block to 3!