在scala中,和[B>;:A](隐式数值:数值[B]):B中的A是什么
我在在scala中,和[B>;:A](隐式数值:数值[B]):B中的A是什么,scala,Scala,我在scalaList.sum sum[B >: A](implicit num: Numeric[B]): B 现在我明白了,它希望任何num参数都隐式转换为Numeric[B],这意味着它的类型是typeclassNumeric,但是我不明白的是,如果实现块根本没有引用它,那么A在那里做什么 返回值为B 而且实现是非常简单的 foldLeft(num.zero)(num.plus) 而且num也是Numeric[B]类型,因此如果返回值不引用A,而实现不引用A为什么需要它?它需要能
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
为什么需要它?它需要能够对列表的内容进行操作,这些内容是A
s。因此,B
必须是a
的超类,这就是B>:a
的意思
(特别是,num.plus
必须接受A
参数以匹配fold
的签名)