以下函数定义有什么问题。
def f[A: Ordered] (a: A, b: A): Boolean = a < b
Run Code Online (Sandbox Code Playgroud)
我得到无法解析符号 <。由于 Ordered 是 A 的上下文类,因此它不应该能够解析 < 吗?我错过了什么?
Ordered 不是类型类,而是普通继承的基本特征。
所以要么你更新到...
def f[A <: Ordered[_]](a: A, b: A): Boolean = a < b
Run Code Online (Sandbox Code Playgroud)
...或者您使用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)
Run Code Online (Sandbox Code Playgroud)
我个人不建议从
import scala.math.Ordering.Implicits._(自动魔术的东西)进行隐式转换。
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |