Направляющие: named_scope, лямбда и блоки

В дополнение к другим ответам может быть различие , если Ваш i не int . В C++ , если это - объект класса, которому перегрузили операторы ++() и ++(int), тогда это может иметь значение, и возможно побочный эффект. Производительность ++i должна быть лучше в этом случае (иждивенец на реализации).

52
задан Matt 9 March 2015 в 00:31
поделиться

3 ответа

it's a parser problem. try this

named_scope :admin, (lambda do |company_id| 
  {:conditions => ['company_id = ?', company_id]}
end)
76
ответ дан 7 November 2019 в 09:16
поделиться

Я думаю, проблема может быть связана с разницей в приоритете между {...} и do ... end

Есть некоторое обсуждение SO здесь

Я думаю, что присвоение лямбды переменной (которая будет Proc) может быть выполнено с помощью do ... end :

my_proc = lambda do 
  puts "did it"
end
my_proc.call #=> did it
17
ответ дан 7 November 2019 в 09:16
поделиться

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!
7
ответ дан 7 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: