Cannot assign property in method of struct

前端 未结 2 1268
一整个雨季
一整个雨季 2020-11-27 23:44

In Swift, I\'m trying to do the following:

struct Foo {
    var bar = 1

    func baz() {
        bar = 2
    }
}

Xcode reports the error <

相关标签:
2条回答
  • 2020-11-28 00:07

    If you want to modify the properties of the struct, mark the function as mutating.

    struct Foo {
        var bar = 1
    
        mutating func baz() {
            bar = 2
        }
    }
    
    0 讨论(0)
  • 2020-11-28 00:11

    The reason that you cannot assign to a struct's variable from within the struct itself is because instance methods of a struct cannot mutate instance variables. For this to work you need to add the keyword mutating before the declaration of the function.

    This will give you the following code:

    struct Foo {
        var bar = 1
    
        mutating func baz() {
            bar = 2
        }
    }
    

    The function baz() will now be able to mutate the instance variables of the struct.

    0 讨论(0)
提交回复
热议问题