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]
  • Arraystruct(値型)
  • b = a でコピーが作られる(コピー・オン・ライト
  • b を変更しても a には影響なし

SwiftString, Array, Dictionary などもすべて値型

GDScriptGodot)の場合(Array は参照型)

var a = [1, 2, 3]
var b = a
b.append(4)

print(a) # [1, 2, 3, 4]
print(b) # [1, 2, 3, 4]
  • ArrayObject(参照型)
  • b = a は同じ配列を指す(参照共有)
  • b の変更は a にも影響する

明示的にコピーするには duplicate() を使う

var b = a.duplicate()

#ChatGPTより引用

サイトアイコン
公開日
更新日