的標準方法是有某種方式在Ruby中做到這一點?:是否有一個Proc轉換爲一個方法在Ruby中
add = lambda { |x, y| x + y }
add_m = add.to_method
add_m(3, 4)
的標準方法是有某種方式在Ruby中做到這一點?:是否有一個Proc轉換爲一個方法在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
但是請注意,你可以調用像一個拉姆達的方法,但用方括號:
add = lambda { |x, y| x + y }
p add[3,4]
#=> 7
有趣。如果沒有標準的方法,我可能會使用這個。 – 2012-02-25 00:41:33
@VladtheImpala使用'define_singleton_method'查看我修改後的答案。 – Phrogz 2012-02-25 00:42:42
'add。(3,4)'也可以,假設Ruby(1.9.0+)的版本較新。 – 2012-02-25 01:45:45
不要以爲你可以得到正是這樣,部分原因是因爲沒有簡單的方法來獲取變量/符號要綁定到的名稱。
最近的比賽恕我直言:
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」建議去:加[3,4],
或只是
add.call(3,4)
你的意思,而不是'add_m [3, 4]'你想/需要使用圓括號? – Phrogz 2012-02-25 00:36:11
正好。我想'add_m(3,4)'。 – 2012-02-25 00:40:53