Swift

2016-08-26, swift

クラスと構造体

大きな違いは代入時に値が渡される(コピーされる)か、参照が渡されるかという点だと感じます。クラスと同じように使えるので、ついつい忘れてしまいますが、以下のような挙動の違いは常に意識しておく必要があります。

struct S {
    var v = 0

    init(v: (Int)){
        self.v = v
    }
}

class C {
    var v = 0

    init(v: (Int)){
        self.v = v
    }
}

var s = S(v: 1)
var c = C(v: 1)

s.v // 1
c.v // 1

// 別の変数に代入
var s1 = s
var c1 = c

s1.v = 100
c1.v = 100

s.v // 1
c.v // 100

参考URL

この記事は役に立ちましたか?