Inout on метод класса Swift - PullRequest
       9

Inout on метод класса Swift

0 голосов
/ 02 марта 2019

В этом отрывке из главы 24 Большого ботаника, почему takeOwnership () не нужно использовать параметр inout при внесении изменений в актив?Поскольку он изменяет владельца актива, я ожидал, что актив будет активирован.

Заранее спасибо!

class Person {
var assets = [Asset]()

init(name: String) {
    self.name = name
}

func takeOwnership(of asset: Asset) {
    asset.owner = self
    assets.append(asset)
}

}

1 Ответ

0 голосов
/ 02 марта 2019

Asset - это класс, поэтому он передается по ссылке.Изменения, внесенные в аргумент asset, являются изменениями передаваемого объекта. Если бы Asset была структурой, это действительно должен быть аргумент inout.

Извлечь этот документ

...