簡體   English   中英

是否有將proc轉換為Ruby中的方法的標准方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM