考虑以下类别:
class Foo
def an_inst_method
'instance method'
end
def self.a_class_method
'class method'
end
alias_method :a_new_inst_method, :an_inst_method
end
这没问题,您可以打电话Foo.new.a_new_inst_method
。
我希望能够拥有类方法Foo.add_widget(*items)
并为其添加别名,因此我可以执行以下操作:
Foo.add_widget 'item1'
Foo.add_widgets 'item2', 'item3'
因此,从本质上讲,它具有“ ruby风格”之类的东西1.minute
,2.minutes
因此我想给a 加上别名,Foo.add_widget
从而调用Foo.add_widgets
完全相同的方法。我知道我可以把它包起来,但是我觉得我应该能够以一种更清洁的方式做到这一点。
考虑一下我尝试这样的尝试:
class Foo
def an_inst_method
'instance method'
end
def self.a_class_method
'class method'
end
alias_method :a_new_inst_method, :an_inst_method
alias_method :a_new_class_method, :a_class_method
end
但是,出现以下错误:
NameError (undefined method `a_class_method' for class `Foo')
因此,这似乎不适用于类方法。我该怎么做呢?
extend ClassMethods
解决方案。+1