如何在 Scala 中正确实现类似 class 的自定义数字?
How to correctly implement a custom number-like class in Scala?
我目前正在尝试实现我自己的 UnsignedInt
。我想正确地实现它,以便它适合整个 Scala 类型和 class 系统。但是,我真的很困惑所有适合 Number.
的 classes
我需要使用哪个 class(es):Numeric
、Integral
或 ScalaNumber
?或者完全不同的东西?我自己的 class 应该实施哪些 class 和 and/or 特征?
简短的回答是:不要实现你自己的,使用 Spire :) 否则,你应该实现 Integral
(包括 Numeric
)。请注意,您的类型不应该 扩展 它;您需要伴随对象中的隐式值,即
class UnsignedInt { ... }
object UnsignedInt {
implicit val UIntIntegral: Integral[UnsignedInt] = ...
}
您还应该考虑让您的 class 成为 value class。
我目前正在尝试实现我自己的 UnsignedInt
。我想正确地实现它,以便它适合整个 Scala 类型和 class 系统。但是,我真的很困惑所有适合 Number.
我需要使用哪个 class(es):Numeric
、Integral
或 ScalaNumber
?或者完全不同的东西?我自己的 class 应该实施哪些 class 和 and/or 特征?
简短的回答是:不要实现你自己的,使用 Spire :) 否则,你应该实现 Integral
(包括 Numeric
)。请注意,您的类型不应该 扩展 它;您需要伴随对象中的隐式值,即
class UnsignedInt { ... }
object UnsignedInt {
implicit val UIntIntegral: Integral[UnsignedInt] = ...
}
您还应该考虑让您的 class 成为 value class。