首页 > 解决方案 > 是否可以在 swift 类中编写变异函数?

问题描述

我可以在结构中编写变异函数,但不能在课堂上编写。

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
    }
}

标签: swiftmutating-function

解决方案


在swift中,类是引用类型,而结构和枚举是值类型。默认情况下,值类型的属性不能在其实例方法中修改。为了修改值类型的属性,您必须在实例方法中使用 mutating 关键字。使用此关键字,您的方法就可以在方法实现结束时改变属性的值并将其写回原始结构。


推荐阅读