1、alias 是 Ruby 的一个关键字,因此使用的时候是 alias :new name :oldname,而 alias_method 是 module 类的一个方法,因此使用的时候是 alias_method(:newname, :oldname)有一个逗号

2、alias_method 可以重定义,alias 不能。

3。方法调用时的参数不同,alias_method要求参数是字符串或者符号变量,alias使用变量名或者符合变量,

4. 作用域不同

前面有强调在顶级作用域main中,只能通过alias进行别名定义,而不能使用alias_mehtod是因为在main中调不到Module#alias_method方法,而alias是关键字的缘故,所以能正常在main中使用。

⚠️:通过alias定义方法别名,其变量self的内容是固定不变的,即self所代表的是调用的对象,而alias_method方法中的self却是在运行时确定的,看下面代码:

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 #执行类方法,但alias是关键字,在定义时,已经绑定了self为User
end Developer.new.name #=> 'Johnnie Walker'
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 #执行类方法。self是Developer。
end Developer.new.name #=> 'Gekky geek'

最新文章

  1. C#调用vbs脚本实现Windows版Siri
  2. vue-resource初体验
  3. mysql多种方法修改密码----5.6的坑
  4. 关于GridView只显示一样的问题
  5. 20140213-想念是while里的死循环
  6. Android开发中如何解决加载大图片时内存溢出的问题
  7. WebService支持多平台上传文件的实现
  8. 前端自动化部署之gulp
  9. 各种浏览器开启JavaScript脚本方法
  10. Couchbase忘记登录密码怎么办
  11. VirtualBox的共享文件夹功能的使用演示
  12. logstash收集TCP端口日志
  13. Window下通过SecureCRT的SSH2跳转到另一台Linux服务器
  14. 关于关键字 volatile
  15. Linux的1000个命令
  16. 关于ORA-12505, TNS:listener does not currently know of SID given in connect descriptor报错问题解决办法
  17. JS频率控制函数
  18. 20155236 2016-2017-2 《Java程序设计》第八周学习总结
  19. 【转】每天一个linux命令(48):watch命令
  20. 032:基于Consul和MGR的MySQL高可用架构

热门文章

  1. 数据仓库基础(二)ETL
  2. Linux基础命令---cmp
  3. MySQL用sql复制表数据到新表的方法
  4. java和mysql之间的时间日期类型传递
  5. Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述
  6. 20145104张家明 《Java程序设计》第9周学习总结
  7. 20145317《网络对抗》shellcode注入&amp;Return-to-libc攻击深入
  8. React 回忆录(三)使用 React 渲染界面
  9. boot sector FAT
  10. linux下命令行工具gcp显示拷贝进度条