class Employee attr_reader :id attr_accessor :name def initialize(id,name) @id = id @name = name end def to_s return "#{@id}:#{@name}" end def <=> other return self.id <=> other.id end end
Ruby silverの問題集の中にこんな問題がありました。
疑問に思ったのは、def <=> other
の部分です。
なんでメソッドに演算子が来ているのか?
Rubyは演算子もメソッド
Rubyは演算子もメソッドで、再定義が可能であるということ。
つまり+も演算子であるが、メソッドでもあるということ。
# シンタックスシュガー 1 + 2 #=> 3 1.+(2) # => 3 123 + 456 123.+(456) # => 579
- 演算子も演算子のように呼び出せるだけで、メソッドのように
.
でつなげて呼び出すことができます。
むしろ、1 + 2のように.
がなくても呼び出せるというほうが正しい?
またto_s
のメソッドを再定義すると、puts
メソッドが上書きされるようです。
コメントを残す