0
爲什麼價格可能找不到SeqValue上的屬性值?這似乎很簡單,應該工作。斯卡拉上界:值不是類型參數的成員
即時得到錯誤
[error] .... value value is not a member of type parameter SeqValue
[error] def recalc[SeqValue](input:SeqValue) = Price(1 + seq, input.value)
以下代碼
sealed trait SeqValue {
def seq:Int
def value:Float
override def toString = ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE)
}
sealed trait Calc {
type S <: SeqValue
def recalc[S](input:S):SeqValue
}
case class Price(seq:Int=0, value:Float=.0f) extends SeqValue with Calc {
def recalc[SeqValue](input:SeqValue) = Price(1 + seq, input.value)
}
的想法是,你可以重計算價格目標上,並通過在任何類型的實現SeqValue的對象,因爲SeqValue有一個值。
感謝它的工作!我有很多類實現Calc。有沒有一種方法來重新定義類/特徵,以便我實際上不必在每個類 – George 2012-02-09 20:31:38
中添加類型'S = SeqValue',它似乎沒有工作過'class Price需要抽象,因爲方法在特徵中被重新計算計算類型[S](輸入:S)com.quasiquant.SeqValue未定義 [error] case class價格(seq:Int = 0,value:Float = .0f)用Calc擴展SeqValue' – George 2012-02-09 20:38:01
@George,check編輯。 – missingfaktor 2012-02-09 20:38:13