2014-04-17 59 views
4

我看到scalaList.sum在階什麼是在總和A [B>:A](隱式NUM:數字[B]):乙

sum[B >: A](implicit num: Numeric[B]): B 

現在該方法據我所知,它預計任何num參數被隱式轉換爲Numeric[B],這意味着它的typeclassNumeric然而,我不明白的是,如果實現塊根本沒有引用它,那麼A在那裏做什麼。

返回值是B 和實現是

foldLeft(num.zero)(num.plus) 

numNumeric[B]型的,所以如果返回值並不是指A和實施並不是指A爲什麼需要它?

回答

6

它需要能夠處理列表中的內容,即A s。因此,B必須是A的超類,這是B >: A的含義。

(尤其num.plus必須接受A參數匹配fold簽名。)

相關問題