2012-01-30 16 views
37

Tengo val hm: HashMap[org.joda.time.DateTime, MyType] Estoy tratando de obtener la primera y la última DateTime del conjunto por medio de hm.keys.min y hm.keys.max respectivamente, pero el compilador dice No implicit Ordering defined for org.joda.time.DateTime. ¿Cómo definir este orden (las opciones implícitas y explícitas son interesantes)?¿Cómo se define un pedido en Scala?

Respuesta

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

// elsewhere 
import Joda._ 
dateTimes.sorted 
14

Para facilitar el trabajo con Joda DateTime en Scala, fue creado nscala tiempo: https://github.com/nscala-time/nscala-time

Después de incluir en su proyecto con

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

que sólo puede importar OrderingImplicits. Ya sea a la vez:

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

o una en particular:

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