Scala键入:如何确保数字类型

Lan*_*nbo 8 types functional-programming scala

我在Scala中遇到了一个小问题.在Haskell中,我可以这样做:

add :: (Num a) => (a,a) -> (a,a) -> (a,a)
Run Code Online (Sandbox Code Playgroud)

这样,我可以投入add任何类型的数字和支持+等.我希望Scala类相同,如下所示:

case class NumPair[A <: Numeric](x: A, y: A)
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.但是由于Scala Docs,它Numeric[T]是允许这些操作的唯一特征,并且似乎被扩展Int,Float等等.

有小费吗?

Mad*_*doc 11

case class NumPair[A](x:A, y:A)(implicit num:Numeric[A])
Run Code Online (Sandbox Code Playgroud)

Numeric实例本身不被延长Int,Float等,但它被提供作为一个隐含的对象.有关更长的解释,请参阅此处.