抱歉新手问题;我还在学习。我遇到了一些奇怪的行为,无法找到任何关于此的文档。我想知道你是否可以帮助指出我在这里做错了什么。
错误:
不能在不可变值上使用变异成员:'arr'是'let'常量
class mySingleton {
static let sharedInstance = mySingleton()
private init() {}
var men = ["bob", "doug"]
var women = ["alice", "lisa"]
func removeFirst() {
self.arr.removeFirst()
}
func removeFirstByGender(gender: String) {
if gender == "men" {
self.modify(arr: self.men) // <-- error occurs here.
} else {
self.modify(arr: self.women) // <-- error occurs here.
}
}
func modify(arr: [String]) {
arr.removeFirst()
}
}
答案 0 :(得分:3)
您需要更改modify
的定义以接受inout
参数。默认情况下,函数参数是不可变的,但通过使用inout
关键字,您可以使它们变为可变。您还需要通过引用传递参数。
func modify( arr: inout [String]) {
arr.removeFirst()
}
var stringArr = ["a","b"]
modify(arr: &stringArr) //stringArr = ["b"] after the function call