Skip to content

Instantly share code, notes, and snippets.

@lanrion
Forked from plusor/alias vs. alias_method.md
Created April 9, 2014 13:07
Show Gist options
  • Save lanrion/10268239 to your computer and use it in GitHub Desktop.
Save lanrion/10268239 to your computer and use it in GitHub Desktop.
alias 和 alias_method 区别 ruby

1

class User

  def full_name
    puts "Johnnie Walker"
  end

  alias name full_name
end

User.new.name #=>Johnnie Walker
  • 这两个例子中 alias 不需要逗号,还有冒号(或者双引号)
class User

  def full_name
    puts "Johnnie Walker"
  end

  alias_method :name, :full_name
end

User.new.name #=>Johnnie Walker

2


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是进入原类进行操作,而alias_method是查找当前类同名方法进行操作
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'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment