如何在Scala中正确实现自定义数字类?
我目前正在尝试实现我自己的如何在Scala中正确实现自定义数字类?,scala,class,numbers,Scala,Class,Numbers,我目前正在尝试实现我自己的UnsignedInt。我希望正确地实现这一点,以便它适合整个Scala类型和类系统。然而,我真的被所有适合数字的类弄糊涂了 我需要使用哪些类:Numeric、Integral或ScalaNumber?还是完全不同的东西?我自己的类应该实现哪些类和/或特性?简单的回答是:不要实现你自己的类和/或特性,使用一个:)否则,你应该实现积分(包括数值)。请注意,您的类型不应扩展它;您需要在伴随对象中使用隐式值,即 class UnsignedInt { ... } objec
UnsignedInt
。我希望正确地实现这一点,以便它适合整个Scala类型和类系统。然而,我真的被所有适合数字的类弄糊涂了
我需要使用哪些类:
Numeric
、Integral
或ScalaNumber
?还是完全不同的东西?我自己的类应该实现哪些类和/或特性?简单的回答是:不要实现你自己的类和/或特性,使用一个:)否则,你应该实现积分(包括数值)。请注意,您的类型不应扩展它;您需要在伴随对象中使用隐式值,即
class UnsignedInt { ... }
object UnsignedInt {
implicit val UIntIntegral: Integral[UnsignedInt] = ...
}
你也应该考虑让你的班级A。
是<代码>积分< /代码>够了吗?还是我也需要其他人?除了Spire还有其他的实现吗?(谢谢链接!)Integral
将为您提供所有标准的数字运算和整数除法。您可能还需要订购。也有,但没有维护。