我目前正在尝试实施自己的UnsignedInt
。我想正确地实现它,以便它适合整个Scala类型&类系统。但是,我对所有适合Number的类感到困惑。
我需要使用哪个班级:Numeric
,Integral
或ScalaNumber
?还是完全不同的东西?我自己的班级应该实现哪些类和/或特征?
答案 0 :(得分:2)
简短的回答是:不要实现自己的,使用Spire一个:)否则,你应该实现Integral
(包括Numeric
)。请注意,您的类型不应扩展它;你需要伴侣对象中的隐含值,即
class UnsignedInt { ... }
object UnsignedInt {
implicit val UIntIntegral: Integral[UnsignedInt] = ...
}
您还应该考虑将您的课程设为value class。