WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

alias_methodでメソッドに別名をつける

      2015/05/18

alias_method

alias_methodを使えば既に定義されたメソッドに別名をつけることができる。

class Hoge
  def greet
    "Hello"
  end

  alias_method :hello, :greet
end

例えば、上記のHoge クラスだとgreet メソッドにhelloという別名をつけて使うことができる。

irb> require "hoge"
irb> hoge = Hoge.new
irb> hoge.greet
 => "Hello"
irb> hoge.hello
 => "Hello"

書式は以下のように、別名として利用したい名前と利用元のメソッド名を書く。

alias_method :new_name, :original_name

なお、以下のようにまだ定義されていないメソッドに対してalias_methodを実行するとNameErrorとなる。

    class Hoge
      alias_method :hello, :greet

      def greet
        "Hello"
      end
    end
    
    irb> require "hoge"
    NameError: undefined method `greet' for class `Hoge'
    

ソースコードリーディングなどをしていると、alias_methodはモジュールのインクルードなどを行われる場合によく併用されているように思える。

 - Ruby , ,