5
クラステスト

  def my_print
    p「何か印刷して」
  終わり
終わり

クラス テスト

  alias_method :old_print, :my_print
  def my_print
    old_print
    p「もう少し印刷してください」
  終わり
終わり

私の元の Test クラスが一番上にあります。次に、さらに追加することにしましたが、エイリアスにすることにしました。

ただし、それは my_print が既に定義されていることを前提としています。エイリアスしているメソッドが既に定義されているかどうかを確認するための短くて簡単な方法はありますか?

4

4 に答える 4

4

どうですか

if Test.method_defined? :my_print
    alias_method :old_print, :my_print
end
于 2012-05-20T21:18:44.397 に答える
2

「my_print」はクラスメソッドではなくインスタンスメソッドであるため、次のことを行う必要があります。

if Mod.instance_methods.include? "my_print"
  alias_method :old_print, :my_print
end
于 2012-05-20T21:21:38.950 に答える
0

if method(:my_print) alias_method :old_print, :my_print end

于 2016-05-26T00:35:48.707 に答える