无法在struct方法中赋值

时间:2014-10-19 04:17:42

标签: swift

在Swift中,我尝试执行以下操作:

struct Foo {
    var bar = 1

    func baz() {
        bar = 2
    }
}

Xcode报告方法行中的错误Cannot assign to 'bar' in self

为什么呢?如果我将结构更改为类,则没有错误。

2 个答案:

答案 0 :(得分:9)

如果要修改结构的属性,请将该函数标记为变异。

struct Foo {
    var bar = 1

    mutating func baz() {
        bar = 2
    }
}

答案 1 :(得分:2)

您无法从结构本身内部分配结构变量的原因是因为结构的实例方法不能改变实例变量。为此,您需要在声明函数之前添加关键字mutating。

这将为您提供以下代码:

struct Foo {
    var bar = 1

    mutating func baz() {
        bar = 2
    }
}

函数baz()现在可以改变struct的实例变量。