在scala中,A的总和是什么[B>:A](隐含的数字:数字[B]):B

时间:2014-04-17 15:05:31

标签: scala

我在scala List.sum

中看到了这种方法
sum[B >: A](implicit num: Numeric[B]): B

现在我明白它希望任何num参数隐式转换为Numeric[B],这意味着typeclass Numeric然而我不明白的是如果实现块根本没有引用它,那么A在那里做什么。

返回值为B 并且实施是

foldLeft(num.zero)(num.plus)

num也属于Numeric[B]类型,因此如果返回值未引用A且实现未引用A,为什么需要它?

1 个答案:

答案 0 :(得分:6)

它需要能够对列表的内容进行操作,这些内容是A。因此,B必须是A的超类,这是B >: A的含义。

(特别是,num.plus必须接受A个参数才能匹配fold的签名。)

相关问题