Swift:两分钟内了解突变功能

9 min read

哪果您曾经尝试使用变更关键字在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]