视图界定
就是跟隐式转换结合使用的,需要传入隐式转换方法或隐式转换函数
package cn._51doit.scala.day05
class Pair3[T <% Ordered[T]] {
def choose(first: T,second: T): T = {
if(first >= second) first else second
}
}
object Pair3 {
def main(args: Array[String]): Unit = {
import MyContext._
val p = new Pair3[Boy]
val b1 = new Boy("A", 88)
val b2 = new Boy("B", 99)
val r = p.choose(b1, b2)
println(r.name)
}
}
package cn._51doit.scala.day05
class Boy(val name: String, val fv: Int) {
}
package cn._51doit.scala.day05
object MyContext {
implicit def boyToOrderedBoy(boy: Boy): Ordered[Boy] = new Ordered[Boy] {
override def compare(that: Boy): Int = {
boy.fv - that.fv
}
}
implicit def boyToOrderedBoy(boy: Boy): Ordered[Boy] = new Ordered[Boy] {
override def compare(that: Boy): Int = {
boy.fv - that.fv
}
}
}