哪果您曾经尝试使用变更关键字在Swift的类方法中,编译器肯定会对你大喊大叫,因为你做错了什么。
在swift中,类是引用类型而结构和枚举被实值型别。
默认情况下,值类型的属性不能在其实例方法中修改。
若要修改值类型的属性,必须使用mutating关键字在实例方法中。
使用这个保留字,您的方法就可以在方法实作结束时,变更属性的值,并将它写回原始结构。
下面是Swift中Stack的一个简单实现,说明了变异函数的使用。
struct Stack { public private(set) var items = [Int]() // Empty items array mutating func push(_ item: Int) { items.append(item) } mutating func pop() -> Int? { if !items.isEmpty { return items.removeLast() } return nil } } var stack = Stack() stack.push(4) stack.push(78) stack.items // [4, 78] stack.pop() stack.items // [4]