在ruby中使用调用方法作为参数

时间:2015-09-07 23:26:17

标签: ruby parameters

很抱歉,如果不是那么表达,但我真的无法弄清楚如何标题这个问题。事情是这样的:

我必须运行此测试:

Aspects.where has_parameters(3, 'optional')

我有这个方法:

def self.has_parameters(amount, status = 'everything')
   if status == 'mandatory'
     ***.parameters.select do |param| param.first == :req end.size == amount
   elsif status == 'optional'
     ***.parameters.select do |param| param.first == :opt end.size == amount
   elsif status == 'everything'
     ***.parameters.size == amount
   end
end

Aspects是具有两种方法(where和has_parameters)

的类

一个“where”方法,它假装返回一个方法(:symbol)

问题在于用“where”返回我们的方法替换***。

所以它会是这样的:     Aspects.where将离开我们,例如:singleton_method ..而且我需要以某种方式使has_parameters知道:singleton_method是***

谢谢!!!任何问题只是问!!

1 个答案:

答案 0 :(得分:0)

假设您想构建一个流畅的调用链(并且我放弃了解块do |param| ...),您可以将where返回的最后一个值存储在类字段@@current_method中< / p>

class Aspects

  @@current_method

  def self.where(p)
    @@current_method = p.blah()
  end

  def self.has_parameters(amount, status = 'everything')
   if status == 'mandatory'
     @@current_method.parameters {|p| ... }
  end
end