web-dev-qa-db-fra.com

Comment définir une commande à Scala?

Ayant val hm: HashMap[org.joda.time.DateTime, MyType] J'essaie d'obtenir le premier et le dernier DateTime de l'ensemble au moyen de hm.keys.min et hm.keys.max respectivement, mais le compilateur dit No implicit Ordering defined for org.joda.time.DateTime. Comment définir cette commande (les options implicites et explicites sont intéressantes)?

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

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

Pour faciliter travailler avec Joda DateTime à Scala, NSCALA-Time a été créé: https://github.com/nscala-time/nscala-time

Après l'inclure dans votre projet avec

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

vous pouvez simplement importer OrderingImplicits. Soit tout à la fois:

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

ou un particulier:

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