Swift类方法的Inout

时间:2019-03-02 02:02:02

标签: swift3

在Big Nerd Ranch第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 :(得分:0)

Asset是一个类,因此已通过引用传递。对asset参数所做的更改就是对传入对象的更改。如果Asset是一个结构,则实际上必须是一个inout参数。

Checkout this doc