Ответы пользователя по тегу Lua
  • [Lua] Почему таблица внутри метатаблицы считается "статичной"?

    @Fuduin Автор вопроса
    Скорее всего это происходит из-за того, что вся работа с таблицами происходит по ссылке. Поэтому, когда идет обращение к position (для любой таблицы с метатаблицей CObject) к нам в руки попадает ссылка на таблицу position которая была создана еще в таблице CObject.

    Пока в качестве решения придумал следующее, таблицу в метатаблице объявить как nil и создать функцию которая будет переопределять position как таблицу и внесить туда все значения.

    Если есть более адекватные решения пишите, буду рад. Ниже код файла Object.lua

    local base = _G
    
    module("Object")
    
    local CObject = {
    	position = nil,
    	text = "Some text"
    }
    
    function CObject:init()
    	self.position = {}
    	self.position.x = 0
    	self.position.y = 0
    end
    
    function new()
    	local res = {}
    	base.setmetatable(res, { __index = CObject })
    	res:init()
    
    	return res
    end
    Ответ написан
    Комментировать