如何将类方法作为参数传递?

时间:2015-06-03 23:46:54

标签: ruby

我想将一个类方法传递给另一个函数,我该怎么做?

class A
  def A.test(data)
    puts data
  end
end

def ps(fun)
  fun(3)
end

ps(A.test)

2 个答案:

答案 0 :(得分:3)

您必须使用正确的getter来接收方法对象:

class A
 def A.test(data)
    puts data
  end
end

def ps(fun)
  fun.call(3)
end

ps(A.method(:test)) #=> 3

method方法返回方法对象,可以使用call执行。

答案 1 :(得分:0)

您只需将[ 100, 50 , 11, 11]传递给method_name,并psps消息发送到method_name类(并始终为A } class)使用这个:

A

或者您可以使用以下内容将class A def A.test(data) puts data end end def ps(method_name) A.send(method_name, 3) end ps(:test) # => 3 课程和A传递给method_name

ps