我試圖找到另一種避免類型不匹配錯誤的方式,它看起來比我現在使用的錯誤類型更正確。Scala錯誤類型不匹配
考慮到列表和功能,分別爲:
var l = List[Int]()
def append[U](cmd: U) = {
l = l :+ cmd
}
當解釋上面的代碼中,我發現了以下錯誤:
<console>:10: error: type mismatch;
found : List[Any]
required: List[Int]
l = l :+ cmd
^
我固定它,方式是通過修改附加功能的工作是這樣的:
def append[U](cmd: U) = {
l = (l :+ cmd).asInstanceOf[List[Int]]
}
有沒有一種定義應用程序的方法end函數不使用asInstanceOf?
試圖更清晰,目標是創建下面的類
abstract class Cstruct{
type T
var value: T
def append[U](value:U)
}
Cstruct應建的方式,將有可能限定延伸Cstruct新的類,但使用不同的數據結構的價值T.與使用任何類型元素的List的Cseq類似,但應該可以使用Set或Map創建類似的元素。
class Cseq[U] (v: U) extends Cstruct{
type T = List[U]
var value: T = List[U](v)
override def append[U](cmd: U) = {
value = (value :+ cmd).asInstanceOf[T]
}
}
爲什麼'append'通用?你只能將'Int's(或超類型)附加到'List [Int]' – Lee