落書きノート

ふと自分が気になった事を書いてます

Ruby 組み込みライブラリ(配列)オーバーライド等々

sortメソッドで使われる演算子をオーバーライドして使うというやり方が参考になりました。

class Employee
  attr_reader :id
  attr_reader :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

employees = []
employees << Employee.new("3","Tanaka")
employees << Employee.new("1","Suzuki")
employees << Employee.new("2","Sato")
employees.sort!
employees.each do |employee|
  puts employee
end

実行結果

1:Suzuki
2:Sato
3:Tanaka

クラスの変数idを基準として比較させるというふうに変えてやれば良いようですね。問題集、勉強になります。

Ruby技術者認定試験合格教本 Silver/Gold対応 Ruby公式資格教科書
増井 雄一郎 小川 伸一郎 株式会社 日立ソリューションズ 牧 俊男
技術評論社
売り上げランキング: 118,603