2015-07-12 53 views
1

我目前正試圖實施我自己的UnsignedInt。我想正確地實現它,以便它適合整個Scala類型的類系統。但是,我對所有符合Number的類感到困惑。如何在Scala中正確實現自定義數字類?

我需要使用哪類工作:NumericIntegralScalaNumber?或者完全不同的東西?我的班級應該實施哪些課程和/或特點?

回答

2

簡短的回答是:不要實現你自己的,使用Spire一個:)否則,你應該實現Integral(其中包括Numeric)。請注意,您的類型不應該延伸它;你需要隱含值在同伴對象,即

class UnsignedInt { ... } 

object UnsignedInt { 
    implicit val UIntIntegral: Integral[UnsignedInt] = ... 
} 

你也應該考慮讓你的類value class

+0

「積分」就夠了嗎?或者我還需要其他人嗎?除了Spire,還有其他的實現嗎? (謝謝你的鏈接!) – r0estir0bbe

+0

'Integral'會給你所有的標準號碼操作和整數除法。你可能也需要'Ordering'。還有https://github.com/nystrom/scala-unsigned,但它不被維護。 –

相關問題