SwiftとGDScriptでみる値型と参照型の違い
作成日
更新日
定義
- 値型(value type):代入や引数渡しのときにコピーされる型。
- 参照型(reference type):代入や引数渡しで**参照(ポインタ)**が渡される型。
Swift の場合(Array は値型)
var a = [1, 2, 3]
var b = a
b.append(4)
print(a) // [1, 2, 3]
print(b) // [1, 2, 3, 4]
Array
は struct(値型)b = a
でコピーが作られる(コピー・オン・ライト)b
を変更してもa
には影響なし
Swiftの String
, Array
, Dictionary
などもすべて値型
GDScript(Godot)の場合(Array は参照型)
var a = [1, 2, 3]
var b = a
b.append(4)
print(a) # [1, 2, 3, 4]
print(b) # [1, 2, 3, 4]
Array
は Object(参照型)b = a
は同じ配列を指す(参照共有)b
の変更はa
にも影響する
明示的にコピーするには duplicate()
を使う
var b = a.duplicate()
#ChatGPTより引用

公開日
更新日