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