Поведение таблицы Lua - PullRequest
0 голосов
/ 16 мая 2018
Table1 = {"x"}
Table2 = Table1

выполнение кода ниже изменит значение Table1

Table2[1] = "y"
Table1[1] is now "y" instead of "x"

В чем причина этого? Почему этого не происходит с другими типами данных, такими как переменная, которая содержит строку или целое число? Есть ли польза от этого?

1 Ответ

0 голосов
/ 16 мая 2018

Простое объяснение:
Переменная не содержит объект.
Переменная содержит ссылку на объект.

для номеров:

Number1 = 42
-- Variable refers to an object (a number 42)
Number2 = Number1 
-- Both variables refer to the same object (a number 42)
Number2 = Number2 + 1
-- You created new object (a number 43) and made variable Number2 refer to this new object.

для таблиц:

Table1 = {"x"}
-- Variable refers to an object (an array containing string "x")
Table2 = Table1 
-- Both variables refer to the same object (an array containing string "x")
Table2[1] = "y"
-- You modified existing object.  You didn't create new one.
...