クラスより構造体が利用される理由 Swift
インターン先でclassよりstructを使っているまたはみる回数のほうが多いような気がした。
柑橘系でくらべてみました。
クラスより構造体が利用される理由
クラスは参照型名ため、インスタンスが引数として渡されたとき、そのインスタンスの参照が渡されるから下のような場合、プロパティの値を変更すると両方のインスタンスに影響されてしまう。
class Food {
var number: Int = 0
}
class Fruit {
var citrusFruit: Food
init(citrusFruit: Food) {
self.citrusFruit = citrusFruit
}
}
let citrusFruit = Food()
citrusFruit.number = 5
let orange = Fruit(citrusFruit: citrusFruit)
citrusFruit.number = 10
let lemon = Fruit(citrusFruit: citrusFruit)
orange.citrusFruit.number // 10
lemon.citrusFruit.number // 10
逆に、構造体は値型なので、インスタンスが引数として渡されるとき、その参照ではなくて値そのものが渡されるから、それぞれのインスタンスは別々のインスタンスを保持できる。
struct Food {
var number: Int = 0
}
struct Fruit {
var citrusFruit: Food
}
var citrusFruit = Food()
citrusFruit.number = 5
let orange = Fruit(citrusFruit: citrusFruit)
citrusFruit.number = 10
let lemon = Fruit(citrusFruit: citrusFruit)
orange.citrusFruit.number // 5
lemon.citrusFruit.number // 10
クラスを利用するときは参照を共有する必要があるときと、インスタンスのライフサイクルと合わして処理を実行するとき!
Author And Source
この問題について(クラスより構造体が利用される理由 Swift), 我々は、より多くの情報をここで見つけました https://qiita.com/KnoTrd/items/5ba92f7bf820643d6908著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .