Alias 方法

当你使用来自多个模块有类似命名的方法时,避免歧义的一种方式是给这些方法一个“别名”(alias)。别名是具有新名称的现有方法的副本。你可以使用 alias 关键字后跟新名称,以及旧名称:

alias_methods.rb
  1. alias happyexpression expression

你还可以使用别名(alias)来创建一个已被覆盖方法的副本,以便你可以在定义被覆盖之前指定引用其版本:

  1. module Happy
  2. def Happy.mood
  3. return "happy"
  4. end
  5. def expression
  6. return "smiling"
  7. end
  8. alias happyexpression expression
  9. end
  10. module Sad
  11. def Sad.mood
  12. return "sad"
  13. end
  14. def expression
  15. return "frowning"
  16. end
  17. alias sadexpression expression
  18. end
  19. class Person
  20. include Happy
  21. include Sad
  22. attr_accessor :mood
  23. def initialize
  24. @mood = Happy.mood
  25. end
  26. end
  27. p2 = Person.new
  28. puts(p2.mood) #=> happy
  29. puts(p2.expression) #=> frowning
  30. puts(p2.happyexpression) #=> smiling
  31. puts(p2.sadexpression) #=> frowning