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

Use calling method as parameter in ruby

抱歉,如果它不是那么富有表现力,但我真的不知道如何给这个问题命名。事情是这样的:

我必须运行这个测试:

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)的 class

还有一个 "where" 方法可以假装 returns 一个方法 (:symbol)

问题在于用 "where" returns 我们的方法替换 ***。

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

谢谢!!!有问题就问!!

假设你想构建一个流畅的调用链(我放弃理解块 do |param| ...)你可以将 where 返回的最后一个值存储在 class 字段中@@current_method

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