2017-07-30 32 views
0

我想知道,为什么这不起作用:错误添加元素可变序列

import scala.collection.mutable 
var array: mutable.Seq[Int] = mutable.ArrayBuffer[Int]() 
array += 5 

我得到一个错误,指出只有+=作品的字符串,这是为什么?

error: value += is not a member of scala.collection.mutable.Seq[Int] 
    Expression does not convert to assignment because: 
    type mismatch; 
    found : Int(5) 
    required: String 
    expansion: array = array.$plus(5) 
     array += 5 
      ^
+1

[在Scala中将元素添加到Seq \ [String \]中](https://stackoverflow.com/questions/26579853/add-element-to-seqstring-in-scala) – eje

+2

使用'var'和一个可变的集合是冲突的。最好将可变集合声明为'val'。 – cchantep

+0

@cchantep如果我这样做,我将无法改变集合...''表达式不会转换为赋值,因为接收器是不可分配的'' –

回答

2

如果你想append to the end,请尝试以下操作:

array :+= 5 

如果你想prepend to its beginning,做到以下几点:

array +:= 5 

我猜你的假设+为定义可变的Seq s,但事实并非如此。存在隐式转换(在Predef)到String s,因此+=被尝试作为字符串连接工作。

+1

正确。如果你想预先/附加,使用一个'缓冲区',而不是'mutable.Seq'。 –