前提・実現したいこと
ScalaのOrderingについてです。
現在Orderingの学習中でして、専用のクラスの型によるOrderingを実装したいと考えております。(この表現が合っているかは分かりません)
例えば以下のクラスがあったとします。
case class Hero( name: String, //名前 attack: Int, //攻撃力 defense: Int //防御力 ) val yamada = Hero(name = "yamada", attack = 10, defense = 10) val tanaka = Hero(name = "tanaka", attack = 10, defense = 15) val sasaki = Hero(name = "sasaki", attack = 20, defense = 10) val kimura = Hero(name = "kimura", attack = 10, defense = 10) val heros: Seq[Hero] = Seq(yamada, tanaka, sasaki)
このクラスに対してsortするとき、指定された値によってsortする優先順位や昇順/降順を指定したい場合どうすればよいのでしょうか?
例えば以下のようなIntの配列を用意し、それぞれの番号にしたがってsortする優先順位をつけるとします。
// 1:nameで昇順sort // 2:attackで昇順sort // 3:defenseで昇順sort // 4:nameで降順sort // 5:attackで降順sort // 6:defenseで降順sort val nums: Seq[Int] = seq(2,3,1) // attackでsortし、同じ値だった場合difenseでsortし、さらに同じ値だった場合nameでsortする
此方の条件で、このようなStatusのSort専用のメソッドを作りたいと考えております。
def sortHero(heros: Seq[Hero], nums: Seq[Int]): Seq[Hero] = { }
できれば方法と共に解説もいれていただけると助かります。
もちろん方法だけでもかまいません。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
scala 2.12でお願いします。
あなたの回答
tips
プレビュー