下面的函数定义有什么问题。
def f[A: Ordered] (a: A, b: A): Boolean = a < b
我无法解析符号 <.由于 Ordered 是 A 的上下文类,它不应该能够解析 < 吗?我错过了什么?
最佳答案
Ordered
不是类型类,而是普通继承的基本特征。
所以要么你更新到...
def f[A <: Ordered[_]](a: A, b: A): Boolean = a < b
...或者您使用 Ordering
类型类来保持上下文边界:
def f[T : Ordering](a: T, b: T): Boolean = {
val order = implicitly[Ordering[T]]
order.lt(a, b)
}
// Or:
def f[T](a: T, b: T)(implicit order: Ordering[T]): Boolean = order.lt(a, b)
Personally I don't recommend the implicit conversion from
import scala.math.Ordering.Implicits._
(auto-magic stuff).
关于scala - 上下文边界和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599088/