alias和alias_method的区别:

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'


转载于:https://www.cnblogs.com/chentianwei/p/9541312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值