DateTime(joda)で> =、>などを使用しようとしています。変換DateTimeから暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙変換に変換することができません
implicit def dateTime2ordered(x: DateTime): Ordered[DateTime] =
new Ordered[DateTime] with Proxy {
val self = x
def compare(y: DateTime): Int = {
x.compareTo(y)
}
}
私は
implicit def comparable2ordered[A <: Comparable[A]](x: A): Ordered[A] =
new Ordered[A] with Proxy {
val self = x
def compare(y: A): Int = {
x.compareTo(y)
}
}
ような、より一般的な形式を好むだろう。しかし、コンパイラは、この変換を見つけることができない、そしてそれを直接起動しようとした後、私は次のメッセージを得ている
DateTimeの型がComparable [A]ではないと主張します。 DateTimeのソースを調べた後、私はそれが生の型としてComparableだけを実装しているのを見ました。
は私が
implicit def comparable2ordered[A <: Comparable[_]](x: A): Ordered[A] =
new Ordered[A] with Proxy {
val self = x
def compare(y: A): Int = {
x.compareTo(y)
}
}
を使用して、それが仕事を得ることができた私の質問は:これは、この問題の正しいScalaの治療法である、またはワイルドカード型は型チェックと将来の問題原因バインドでしょうか?
私はこれがうまくいくと思います: 'import com.github.nscala_time.time.Imports._' – Chris
これはうまく動作しますが、nscala-timeライブラリを使用している場合のみです。 ;) –
私は「拡張オーダー」ソリューションが好きです:短くて清潔で、「魔法」を最小限に保ちます – Integrator