Size: a a a

2020 September 01

E

Eugene in RubyRush
потому что proc - это объект, реализующий концепцию "блока" :)
источник

E

Eugene in RubyRush
а блок по определению исполняется внутри метода, в котором его вызвали
источник

S

Sergey in RubyRush
Ni
и нет такого условия, когда ошибка не возникла бы
Только если передать в блоке break, то работает. А если создавать сам объект Proc, то возникает ошибка
источник

E

Eugene in RubyRush
Sergey
Только если передать в блоке break, то работает. А если создавать сам объект Proc, то возникает ошибка
если вы его в том же методе вызовете, то будет работать
источник

E

Eugene in RubyRush
вот о чём в этой теме подумать можно: почему в рельсовые скоупы "лябды" передаются явным аргументом, а не блоком?
источник

E

Eugene in RubyRush
источник

E

Eugene in RubyRush
ведь можно было бы: scope(:red) { where(color: 'red') }
источник

S

Sergey in RubyRush
$a = []

def m1(&b)
  b.call
$a << :m1
end

def m2
 m1(&proc { brake })
$a << :m2
end


m2 => LocalJumpError
источник

S

Sergey in RubyRush
Eugene
вот о чём в этой теме подумать можно: почему в рельсовые скоупы "лябды" передаются явным аргументом, а не блоком?
Чтобы аргумент можно было прокинуть?
источник

E

Eugene in RubyRush
Sergey
Чтобы аргумент можно было прокинуть?
аргумент можно и в блок прокинуть
источник

E

Eugene in RubyRush
scope(:red) { |record| record.where(color: 'red') }
источник

E

Eugene in RubyRush
ну или там scope(:colored) { |color| where(color: color) }
источник

DG

Denis Gavrilin in RubyRush
со стрелочкой как-то сразу понятно что это лямба
источник

E

Eugene in RubyRush
Denis Gavrilin
со стрелочкой как-то сразу понятно что это лямба
"из-за любви к стрелочкам" - норм причина, но недостаточно хороша, чтобы делать это стандартом
источник

S

Sergey in RubyRush
Eugene
ну или там scope(:colored) { |color| where(color: color) }
а вызывать на модели как?
источник

E

Eugene in RubyRush
Sergey
а вызывать на модели как?
а как сейчас вызывается?
источник

E

Eugene in RubyRush
т.е. ваш вопрос не о том, почему явные lambda-объекты, а не блок
источник

E

Eugene in RubyRush
в обоих случаях: model.instance_eval(proc_or_lambda)
источник

S

Sergey in RubyRush
Eugene
а как сейчас вызывается?
User.registered(argument)
источник

E

Eugene in RubyRush
Sergey
User.registered(argument)
вот точно также и вызывали бы
источник