2012-03-13 26 views

回答

12

沒有,因爲綁定的情況下實際上是一個額外的隱含參數的簡寫。

例如:

def sort[A : Ordering](xs: Seq[A]) 

def sort[A](xs: Seq[A])(implicit ordering: Ordering[A]) 

的簡寫形式,這不能在類型定義來表示。

+0

感謝。這是有道理的。 – 2012-03-14 07:31:37

12

不必在類型聲明中直接綁定上下文,而必須有一個單獨的值聲明來表示JPP提到的隱式參數。

誰定義的類型也將提供綁定的語境證據:

trait Generic { 
    type U 
    implicit val ordering: Ordering[U] // evidence for U: Ordering 

    def max(u1: U, u2: U) = List(u1, u2).max 
} 

def concrete[T: Ordering] = new Generic { 
    type U = T 
    val ordering = implicitly[Ordering[T]] 
} 

assert(concrete[Int].max(1,3) == 3) 
+2

這應該是被接受的答案 – 2016-04-22 11:57:56

相關問題