Ruby

ruby随即1 -- alias 和alias_method

2016-12-14  本文已影响48人  就叫初九吧

保留字(reserved word),指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名(方法名)使用。
保留字包括关键字和未使用的保留字。关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。一般出现这种情况可能是由于考虑扩展性。例如,Javascript有一些未来保留字,如abstract、double、goto等等。

在 ruby中 保留字仍旧可以作为标识符(例如方法名称)


alias和alias_method都可以用来为方法定义别名

alias new_name old_name
alias_method(new_name, old_name)

class Student
    def full_name
        'Shisi'
    end

    alias name full_name
    alias :n1 :full_name
    
    alias_method :n2, :full_name 
    alias_method 'n3', 'full_name'
end
class Student
    
    def full_name
        'Shisi'
    end

    alias name full_name
    alias :n1 :full_name
    
    alias_method :n2, :full_name
    alias_method 'n3', 'full_name'

    def self.add_name
        alias :n4 :full_name
    end
    def self.add_name1
        alias_method :n5, :full_name
    end
end

class S1 < Student
    def full_name
        'ss'
    end
    add_name1
    add_name
end

irb(main)>S1.new.n4
=> "Shisi"
irb(main)> S1.new.n5
=> "ss"

区别

  1. alias是ruby的关键字 alias_method是方法
  2. alias_method 必须使用 symbol或者字符串 alias则没这种限制,推荐使用symbol
  3. 作用域不同 alias是关键字,在进行词法分析的时候读到源代码的时候将其当做self,alias_method 是方法self在运行时决定

** 推荐使用alias_method 其灵活性更大**


参考文章

上一篇下一篇

猜你喜欢

热点阅读