41 votes

Comment définir un ordre en Scala ?

Avoir 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 y hm.keys.max respectivement, mais le compilateur dit No implicit Ordering defined for org.joda.time.DateTime . Comment définir cet ordre (les options implicites et explicites sont intéressantes) ?

101voto

retronym Points 35066
object Joda {
    implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isBefore _)
}

// elsewhere
import Joda._
dateTimes.sorted

17voto

Majki Points 141

Pour faciliter le travail avec Joda DateTime en Scala, nscala-time a été créé : https://github.com/nscala-time/nscala-time

Après l'avoir inclus dans votre projet avec

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

vous pouvez simplement importer OrderingImplicits . Soit d'un seul coup :

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

ou un particulier :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X