我知道Ruby中的方法不是对象,但procs和lambdas是。除了这一点,它们之间有什么区别吗?因为我们都可以传递它们。那么,是什么使proc对象与方法不同呢?
方法:
1.8.7-p334 :017 > def a_method(a,b)
1.8.7-p334 :018?> puts "a method with args: #{a}, #{b}"
1.8.7-p334 :019?> end
1.8.7-p334 :021 > meth_ref = Object.method("a_method")
=> #<Method: Class(Object)#a_method>
1.8.7-p334 :022 > meth_ref.call(2,3)
Proc对象:
a = lambda {|a, b| puts "#{a}, #{b}"}
a.call(2,3)
a = Proc.new{ | a, b | puts "#{a}, #{b}" }
我认为问题的标题意味着我们正在谈论“Proc[s]”,而不是“lambda”。 - Jordan Stewart