web-dev-qa-db-ja.com

Scalaで順序を定義する方法は?

val hm: HashMap[org.joda.time.DateTime, MyType]を持っているセットの最初と最後のDateTimeをそれぞれhm.keys.minhm.keys.maxで取得しようとしていますが、コンパイラーはNo implicit Ordering defined for org.joda.time.DateTimeと言っています。この順序を定義する方法(暗黙的オプションと明示的オプションの両方が興味深い)?

41
Ivan
object Joda {
    implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isBefore _)
}

// elsewhere
import Joda._
dateTimes.sorted
100
retronym

ScalaでJoda DateTimeでの作業を容易にするために、nscala-timeが作成されました: https://github.com/nscala-time/nscala-time

それをあなたのプロジェクトに含めた後

libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "1.8.0"

OrderingImplicitsをインポートするだけです。一度にすべて:

import com.github.nscala_time.time.OrderingImplicits._

または特定のもの:

import com.github.nscala_time.time.OrderingImplicits.DateTimeOrdering
17
Majki