Похоже, что proc может быть выполнен в другом объекте, но лямбда не может.Выполнение лямбда в контексте другого объекта
[1] pry(main)> class A; def a; 5; end; end
[2] pry(main)> pr = proc { a + 1 } # => #<Proc:[email protected](pry):2>
[3] pry(main)> la = -> { a + 1 } # => #<Proc:[email protected](pry):3 (lambda)>
[4] pry(main)> A.new.instance_eval &pr
=> 6
[5] pry(main)> A.new.instance_eval &la
ArgumentError: wrong number of arguments (1 for 0)
from (pry):3:in `block in __pry__'
[6] pry(main)>
Есть ли другой способ для лямбды быть выполнен как прок в этом примере, или я должен всегда использовать проки вместо в таких ситуациях?