Gdscript 错误或奇怪的行为
Gdscript Bug or strange behaviour
我注意到 gdscript 中有一些奇怪的行为。
当你声明变量时
var value = [0, 0, 0, 0, 0]
var values = []
并将一个附加到另一个
values.append(value)
然后更改数组中的内容
value[1] = 1
如果您随后打印结果 [print(value, values)]
你得到
prints: [0, 1, 0, 0, 0][[0, 1, 0, 0, 0]]
预期行为
prints: [0, 1, 0, 0, 0][[0, 0, 0, 0, 0]]
发生的事情是,在 GDScript 中,当您将数组 value
附加到 values
时,您实际上是将其引用附加到数组。所以你最终得到一个数组 values
,它的第一个条目是对数组 value
的引用。因此,当您更改 values
中引用的值时,您也会更改原始变量的值。
如需进一步阅读,请查看此 wikipedia page
我注意到 gdscript 中有一些奇怪的行为。
当你声明变量时
var value = [0, 0, 0, 0, 0]
var values = []
并将一个附加到另一个
values.append(value)
然后更改数组中的内容
value[1] = 1
如果您随后打印结果 [print(value, values)]
你得到
prints: [0, 1, 0, 0, 0][[0, 1, 0, 0, 0]]
预期行为
prints: [0, 1, 0, 0, 0][[0, 0, 0, 0, 0]]
发生的事情是,在 GDScript 中,当您将数组 value
附加到 values
时,您实际上是将其引用附加到数组。所以你最终得到一个数组 values
,它的第一个条目是对数组 value
的引用。因此,当您更改 values
中引用的值时,您也会更改原始变量的值。
如需进一步阅读,请查看此 wikipedia page