//1.失败不能隐式转换。no implicit ordering defined from Girl
implicit def girl2Ordering(g: Girl) = new Ordering[Girl] {
override def compare(x: Girl, y: Girl) = {
x.faceValue-y.faceValue
}
}
//2.能够运行成功。
implicit val girl2Ordering = new Ordering[Girl] {
override def compare(x: Girl, y: Girl): Int = {
x.faceValue - y.faceValue
}
}
class Chooser[T: Ordering] {
def choose(first: T, second: T): T = {
//implicit 隐式参数
val ord = implicitly[Ordering[T]]
if (ord.gt(first, second)) first else second
}
}
object Chooser {
def main(args: Array[String]): Unit = {
import MyPredef._
val c = new Chooser[Girl]
val a = new Girl("a", 90)
val b = new Girl("b", 88)
val girl = c.choose(a, b)
println(girl.name)
}
}
请问为什么1会失败?还望指教!