1. 程式人生 > >scala implicit隱式轉化示例

scala implicit隱式轉化示例

def maxList[T](elements : List[T])
                (implicit orderer : T => Ordered[T]) : T =
    elements match {
      case List() =>
        throw new IllegalArgumentException("empty list")
      case List(x) => x
      case x :: rest =>
        val maxRest = maxList(rest) //maxList有兩個引數的,第二個引數編譯器用隱式值補足
        if (x > maxRest) x                     //x不一定有>的方法,如果沒有,編譯器自動隱式轉換為orderer(x)
        else maxRest
    }