2016-02-27 56 views

回答

4

如果您檢查scala.collection.mutable.ArrayOps特徵,您會看到只定義了以下兩個運算符::++:(分別附加和預先考慮)。

retArr :+= tmp 

工作得很好。


關於+=的一點解釋。

但是,當您嘗試在陣列上使用+時,scala會將其視爲scala.Predef.any2stringadd(連接AnyString)。

如果嘗試retArr + "string"你會得到預期的結果:

"[[Ljava.lang.String;@37e44608string" 

retArr += "string"是行不通的,因爲你不能指定StringArray[Array[String]]

+0

請注意,JVM數組的大小是固定的,所以':+ ='必須分配一個新數組並複製舊數組的所有內容。 –