読者です 読者をやめる 読者になる 読者になる

oneir

開発BLOG

値型と参照型

値型と参照型の違い

前提として、Swiftのデータ型は、値型と参照型に大別されて、クラスは参照型・その他の型が値型である。

値型

var str1: String = "ほげ"
var str2: String = str1

上の例では、それぞれ別の実体を参照している。

ですので、

str1 = "ふが"

としてもstr2の値は変わらない。

参照型

続いて参照型の例

class Hoge {
  var num: Int = 0
}

var hoge: Hoge = Hoge()
var hoge2: Hoge = hoge

hoge.num = 10 // hoge2.numも変更される

上の例のように、 参照型では同じ実体を参照しているということがわかる。

参照している実体の確認方法

=== を使うと確認できる

class Hoge{
    var num: Int = 0
}
 
var hoge1: Hoge = Hoge()
var hoge2: Hoge = hoge1
var hoge3: Hoge = Hoge()
 
print(hoge1 === hoge2) // => true
print(hoge1 === hoge3) // => false

Thx

qiita.com