9. Module#prepend
module Awesome
def greet
"awesome " + super
end
end
!
class Person
prepend Awesome
def greet
"hi!"
end
end
!
puts Person.new.greet
#=> awesome hi!
• 継承の先頭に挿し込める機能
!
• include Awesome
• Person -> Awesome
• prepend Awesome
• Awesome -> Person
!
• R.I.P #alias_method_chain
32. Comparable#==
class Person
include Comparable
!
attr_reader :age
!
def initialize(age)
@age = age
end
!
def <=>(other)
self.age <=> other.age
end
end
!
a = Person.new(20)
b = Person.new(18)
!
p a > b
#=> true
!
p a == nil
#=> warning: Comparable#== will no more rescue exceptions of #<=> in the next release.
#=> warning: Return nil in #<=> if the comparison is inappropriate or avoid such comparison.
#=> false
注) 次のバージョンから <=> の例外を隠 してくれなくなります。