Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala中正确实现自定义数字类?_Scala_Class_Numbers - Fatal编程技术网

如何在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
将为您提供所有标准的数字运算和整数除法。您可能还需要订购
。也有,但没有维护。