List 尝试从列表中弹出元素时出现编译错误
我有一些奇怪的编译器错误,我似乎无法理解。以下是相关代码:List 尝试从列表中弹出元素时出现编译错误,list,scala,List,Scala,我有一些奇怪的编译器错误,我似乎无法理解。以下是相关代码: class A { var x = List[B]() def func = { val temp = x(0) x = x tail temp } } 我只想从列表中删除第一个元素并返回它。然而,我得到一个错误,说“类型不匹配:发现B:必需的Int”。我一辈子都搞不懂它为什么要整数 提前感谢您的帮助 什么类型的B?你是说Int 要获取第一个元素,可以使用head。要获取列表的其余部分,可以使
class A {
var x = List[B]()
def func = {
val temp = x(0)
x = x tail
temp
}
}
我只想从列表中删除第一个元素并返回它。然而,我得到一个错误,说“类型不匹配:发现B:必需的Int”。我一辈子都搞不懂它为什么要整数
提前感谢您的帮助 什么类型的
B
?你是说Int
要获取第一个元素,可以使用head
。要获取列表的其余部分,可以使用tail
。Scala中的点运算符是可选的
def func = {
val temp = x.head
x = x.tail
temp
}
是的,所以出于某种原因,当我做x头时,我得到“值更新不是B的成员”。不,我想返回类型B(一个定制的case类),但出于某种原因它需要一个Int。对于x.head。现在我在typechecker中遇到了相同的错误。
x.head
,x head
,和x(0)
都返回列表的第一个元素x
x head
是x.head
的语法糖。引入了不带点的语法来支持中缀应用程序,如myList包含“foo”
,并且在这方面效果很好。如果有疑问,就写上点。不要使用后缀方法语法。编译器认为您的意思是x=x tail temp
。尾部后面的分号也可以,但最好用点。