我试图找到另一种避免类型不匹配错误的方式,它看起来比我现在使用的错误类型更正确。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