Scala 类型:如何确保数字类型
我在 Scala 中遇到一个打字问题的小问题。在 Haskell 中,我可以这样做:
add :: (Num a) => (a,a) -> (a,a) -> (a,a)
这样,我可以将任何数字类型放入 add
中并支持 +
等。 我希望 Scala 类也有同样的效果,如下所示:
case class NumPair[A <: Numeric](x: A, y: A)
但这似乎不起作用。但由于 Scala 文档,Numeric[T]
是允许这些操作的唯一特征,并且似乎由 Int
、Float
扩展> 等等。
有什么建议吗?
I have a small problem in Scala with a typing matter. In Haskell, I can do this:
add :: (Num a) => (a,a) -> (a,a) -> (a,a)
That way, I can throw into add
any type that is a numeric and supports +
etc.
I want the same for a Scala class, like so:
case class NumPair[A <: Numeric](x: A, y: A)
But that does not seem to work. But due to the Scala Docs, Numeric[T]
is the only trait that allows for these operations, and seems to be extended by Int
, Float
etc.
Any tips?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Numeric
实例本身不通过Int
、Float
等扩展,但它作为隐式对象提供。有关详细说明,请参阅此处。The
Numeric
instance itself is not extended byInt
,Float
, etc., but it is provided as an implicit object. For a longer explanation, see here.