次のクラスを検討してください。
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')
そのため、これはクラス メソッドでは機能しないようです。どうすればこれを行うことができますか?