2014年9月15日月曜日

aliasとalias_methodの違い

alias methodの場合
class User

  def full_name
    puts "Johnnie Walker"
  end

  def self.add_rename
    alias_method :name, :full_name
  end
end

class Developer < User
  def full_name
    puts "Geeky geek"
  end
  add_rename
end

Developer.new.name #=> 'Gekky geek'
aliasの場合
class User

  def full_name
    puts "Johnnie Walker"
  end

  def self.add_rename
    alias :name :full_name
  end
end

class Developer < User
  def full_name
    puts "Geeky geek"
  end
  add_rename
end

Developer.new.name #=> 'Johnnie Walker'
alias_methodの方は、動いている時点で評価するので上書きされる。 aliasは式なので、ソースコードが読み込まれた時に、読み込まれる。 alias_methodの方が、柔軟なのかもしれない。

0 件のコメント: