私は、私はその後、私はIntegerReference
を含む配列firstIntegers
そして葯配列secondIntegersis
を割り当てるだけで今firstIntegers
スウィフトアレイの動作
var firstIntegers = [IntegerReference(), IntegerReference()]
var secondIntegers = firstIntegers
の参照を代入している。この
class IntegerReference {
var value = 10
}
ように見える一つのクラス を作成しましたfirstIntegers
の値を変更したい
firstIntegers[0].value = 100
print(firstIntegers[0].value) //100 it is ok..
print(secondIntegers[0].value) //100 it is ok..
しかし、私はfirstIntegers
配列を変更したい場合には、IntegerReference
は、クラス(例えば、1であるので、あなたがfirstIntegers
で値を変更secondIntegers
変更の値である理由secondIntegers
配列
firstIntegers[0] = IntegerReference()
print(firstIntegers[0].value) //10 it is ok..
print(secondIntegers[0].value) // 100 Why 100? it should be 10 or Not?
朝早すぎる:p。とにかく、 'secondIntegers'が最初の値(' 100')のインスタンスをまだ持っているからです。 'firstIntegers [0] = IntegerReference()'では、単に 'firstIntegers'のインスタンスを置き換えただけですが、' secondIntegers'はまだ影響を受けません。インスタンスの値を変更するのは、 'Array'と何か関係があるのではなく、' class'だからです。 – Eendje
私は同様の答えを持っていましたが、@Eendjeは非常にうまく答えました:P – C0mrade
[構造と列挙は値の型です](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ ClassesAndStructures.html) – vadian