Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala:将元素追加到列表中_Scala_List_Collections - Fatal编程技术网

Scala:将元素追加到列表中

Scala:将元素追加到列表中,scala,list,collections,Scala,List,Collections,我有以下两段代码片段;第一个没有给我带来任何麻烦,但是对于第二个(附加到函数中的列表),我收到一条错误消息。这两个之间有什么区别,如何修复第二个 这个很好用: object MyApp extends App { var myList = List.range (1, 6) myList ::= 6 println(myList) } 这不起作用: def myFunc(list:List[Int]):Unit = { list ::=

我有以下两段代码片段;第一个没有给我带来任何麻烦,但是对于第二个(附加到函数中的列表),我收到一条错误消息。这两个之间有什么区别,如何修复第二个

这个很好用:

object MyApp extends App
{
    var myList = List.range (1, 6)
    myList ::= 6    
    println(myList)
}
这不起作用:

def myFunc(list:List[Int]):Unit =
    {
        list ::= 10
    }


error: value ::= is not a member of List[Int]
        list ::= 10
             ^
one error found

标有
var
的变量是可变的,因此可以重新分配。
a::=b
运算符仅由编译器
var
变量提供。它执行操作
a=b::a
。以下是一个例子:

scala> var l1 = List(1,2,3)
l1: List[Int] = List(1, 2, 3)

scala> l1 ::= 4

scala> l1
res1: List[Int] = List(4, 1, 2, 3)

scala> val l2 = List(1,2,3)
l2: List[Int] = List(1, 2, 3)

scala> l2 ::= 4
<console>:9: error: value ::= is not a member of List[Int]
              l2 ::= 4
                 ^
scala> val l3 = 4 :: l2
l3: List[Int] = List(4, 1, 2, 3)
scala>var l1=List(1,2,3)
l1:List[Int]=List(1,2,3)
scala>l1::=4
scala>l1
res1:List[Int]=List(4,1,2,3)
scala>val l2=List(1,2,3)
l2:List[Int]=List(1,2,3)
scala>l2::=4
:9:错误:值::=不是列表[Int]的成员
l2::=4
^
scala>val l3=4::l2
l3:List[Int]=List(4,1,2,3)

传递的参数是不可变的,因此不能使用
:=
运算符。

因此,错误消息“value::=不是列表的成员”是错误的,或者至少没有多大帮助。应该说,类似列表的东西是不可变的,因此不能分配给。我的意思是::并没有突然停止作为一个可以在列表中使用的操作符。我想它可能会更有用,但它并没有错
::=
从来都不是
列表的元素,但编译器会将其转换为
a=b::a