我想检索几个实例方法的参数。惯用的Ruby的方式来做到这一点,像这样:如何获取实例方法参数?
class A
def test(id)
puts id
end
end
A.instance_method(:test).parameters
#=> [[:req, :id]]
这种方法适用的大部分时间,但是我得到的某些方法的一些奇怪的回报,我不知道为什么。
module Events
class Repository
def find(id)
#code
end
def delete(id)
#code
end
end
end
Events::Repository.instance_method(:find).parameters
#=> [[:req, :id]]
Events::Repository.instance_method(:delete).parameters
#=> [[:rest, :args], [:block, :block_for_method]]
这是Ruby错误吗?
注意:我在Rails控制台中输入上面的内容。
我无法重现为Rails 3.2.13本使用Rails控制台,并在Linux中红宝石2.0.0p247。如果您将课程名称更改为随机喜欢的香蕉,您会得到不同的结果吗? 'Events :: Repository.ancestors'显示了什么? “Events :: Repository.instance_method(:delete)'show是什么?也许有一个模块预先定义了'delete'。你使用的是什么版本的Ruby和Rails的版本? –