2
我想定義一個名爲ExtendedNumber的參數化類,它將採用某種形式的整數(如Int或Byte),並將其擴展爲包含無窮大,無窮和空值。特別是,我想用MaxValue來表示無窮大。如果MaxValue的是一個靜態成員,我相信我會做這樣的事情:類型參數在scala中伴隨對象的類型約束
class ExtendedNumber[T <: {val MaxValue : T}] {
val infinity = T.MaxValue
...
}
然而,由於MaxValue的是同伴對象定義,我認爲我需要把一個類型約束同伴對象。這可能嗎?我也對一般問題的其他解決方案開放。
,我不相信你可以直接約束同伴對象,因爲同伴是不是真正的類型系統的一部分,而是一個放鬆當一個類和一個對象之間存在某種詞彙關係時,訪問規則的一部分。同伴也會在隱式解析規則中得到反映,我想可以想象,您可以通過某種方式來接入。但是我會考慮使用上下文綁定來將「無窮大」,「無窮大」等值(可能爲0)的值傳遞給「ExtendedNumber」。 – 2013-02-25 15:56:04