#lua
Я новичок в lua, и для меня не очевидно такое поведение: local a = { name = "A", counter = 0 } function a:say () self.counter = self.counter + 1 print(self.name..": "..self.counter) end local b = a b.name = "B" a:say() -- результат B: 1 -- ожидалось A: 1 a:say() -- результат B: 2 -- ожидалось A: 2 a:say() -- результат B: 3 -- ожидалось A: 3 b:say() -- результат B: 4 -- ожидалось B: 1 Как мне скопировать новый экземпляр таблицы, а не наследовать от старой?
Ответы
Ответ 1
В луа таблицы при присваивании не копируются,a и b - cсылки на таблицу, одну и ту же. Чтоб создать новую таблицу вам надо реализовать функцию копирования и использовать ее: function table.copy (originalTable) local copyTable = {} for k,v in pairs(originalTable) do copyTable[k] = v end return copyTable end local b = table.copy(a)
Комментариев нет:
Отправить комментарий