Qstairs

現役AIベンチャーCTOの知見、画像認識(人工知能、Deep Learning)を中心とした技術ノウハウをアップしていきます

広告

【Androidアプリ開発者から見たSwift】Swiftの参照渡し値渡し

Swiftでは、関数に渡す変数がクラスの場合は参照渡しで
構造体の場合は値渡しになります。

そのため、以下のソースコードのように、
Humanクラスのインスタンスを関数の引数に与え、
関数の中でインスタンスのプロパティを変更です。
一方、Dog構造体は関数の中でプロパティを変更できません。

実装する際には注意が必要ですね。

/* クラス */
class Human{
    var name = ""
    var age = 0
}

/* 構造体 */
struct Dog{
    var name = ""
    var age = 0
}

/* Humanクラスを引数 */
func grow(human: Human){
    human.age += 1
}

/* Dog構造体を引数 */
func grow(dog: Dog){
    // dog.age += 1 /* structは値渡しのため、変更不可 */
}
広告