次のクラスを考えてみましょう:
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