类型Array <string>的不可变值仅具有名为&#39; append&#39; </string>的变异成员

时间:2014-09-07 05:57:37

标签: swift

我有一个简单的例子,我调用一些列表并尝试追加新值。

class User{

    var list:Array<String> = []

    func getList()->Array<String>{
      return list
    }
}

var user = User()
user.getList().append("aaa") // <-- ERROR
user.list.append("aaa") // OK

Immutable value of type Array<String> only has mutating member named 'append'

如果user.getList()返回list,为什么它不起作用。

我知道Java中没有封装,但看起来很奇怪。


[编辑]

关于@MichaelDautermann回答:

var user = User()                        // {["c"]}
var temp:Array<String> = user.getList()  // ["c"]
temp += ["aaa"]                          // ["c", "aaa"]

var z:Array<String> = user.getList()     // ["c"]

1 个答案:

答案 0 :(得分:3)

Your "getList" function is returning an immutable copy of the list array,这就是您无法通过getList()函数检索到的数组进行修改的原因。

但您可以在访问成员变量时修改原始数组,因为您已在&#34; OK&#34;案件。

基本上你可能要么追加原作&#34; list&#34;数组,或写一个&#34; append&#34; func for your&#34; User&#34;类。