我有一个简单的例子,我调用一些列表并尝试追加新值。
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"]
答案 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;类。