[英]Is there a standard way to convert a Proc to a Method in Ruby
有沒有辦法在Ruby中做到這一點?
add = lambda { |x, y| x + y }
add_m = add.to_method
add_m(3, 4)
add = lambda { |x, y| x + y }
define_singleton_method(:add_m,&add)
p add_m(3,4)
#=> 7
但是請注意,您可以像方法一樣調用lambda,但要使用方括號:
add = lambda { |x, y| x + y }
p add[3,4]
#=> 7
不要以為您能確切地做到這一點,部分原因是沒有簡單的方法來獲取要綁定的變量/符號的名稱。
最接近的匹配恕我直言:
class Proc
def to_method(m)
p=self
Object.class_eval {define_method(m, &p)}
end;
end
add = lambda { |x, y| x + y }
add.to_method(:add_m)
add_m(3, 4)
如果不是要向其添加方法的對象,則也應該傳入該類。
如果語法沒什么大不了的話,可以采用Phrogz的建議:add [3,4],
要不就
add.call(3,4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.