Я только что узнал, что функция mutating func - это всего лишь функция curried с первым параметром как inout, поэтому приведенный ниже код будет работать и изменить firstName
на "John"
struct Person {
var firstName = "Matt"
mutating func changeName(fn: String) {
firstName = fn
}
}
var p = Person()
let changer = Person.changeName
changer(&p)("John")
p.firstName
но странная вещь, когда я добавляю наблюдателя свойств к p
, как показано ниже, вы можете видеть, что firstName
по-прежнему "Мэтт", почему?