很抱歉,如果不是那么表达,但我真的无法弄清楚如何标题这个问题。事情是这样的:
我必须运行此测试:
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是***
谢谢!!!任何问题只是问!!
答案 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