다음 클래스를 고려하십시오.
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'
같은 본질적으로는 "루비 스타일"을 가지고 1.minute
와 2.minutes
나는 별명에 할 수 있도록 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