Как определить порядок в Scala? - PullRequest
41 голосов
/ 30 января 2012

Имея val hm: HashMap[org.joda.time.DateTime, MyType] Я пытаюсь получить первый и последний DateTime набора с помощью hm.keys.min и hm.keys.max соответственно, но компилятор говорит No implicit Ordering defined for org.joda.time.DateTime. Как определить этот порядок (интересны неявные и явные параметры)?

Ответы [ 2 ]

100 голосов
/ 30 января 2012
object Joda {
    implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isBefore _)
}

// elsewhere
import Joda._
dateTimes.sorted
17 голосов
/ 31 марта 2015

Для облегчения работы с Joda DateTime в Scala было создано 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
...