У меня есть основной сценарий следующим образом. Этот скрипт называется script.lua (для данного примера)Lua вставка записи в таблицу не работает
require "modules\\myparentclass"
require "modules\\condition"
require "modules\\helpers"
require "constants"
parentclass = MyParentClass:new()
print ("MyParentClass Type : " .. parentclass:getCode())
-- add conditions
-- condition 1
condition1 = Condition:new(nil,"Are you happy?" , "YES")
parentclass:addCondition(condition1)
-- -- condition 2
condition2 = Condition:new(nil,"Are you sad?" , "NO")
parentclass:addCondition(condition2)
local l = parentclass:getConditions()
print(l[2]:getQuestion())
У меня есть еще один класс с именем MyParentClass, код выглядит следующим образом
require "constants"
require "modules\\condition"
require "modules\\helpers"
-- Meta class
MyParentClass = {code = ""}
function MyParentClass:new (o)
o = o or {}
setmetatable(o, self)
self.__index = self
self.condition = condition
self.conditions = {}
return o
end
function MyParentClass:getCode()
return "Parent Class"
end
function MyParentClass:addCondition(condition)
print(condition)
table.insert(self.conditions,condition)
print('record inserted')
-- self.conditions = {next= self.conditions, value = condition}
end
function MyParentClass:getConditions()
return self.conditions
end
и у меня есть третий класс, условие, которое следующим
require "constants"
-- Meta class
Condition = {question="", answer=""}
function Condition:new (o, question,answer)
o = o or {}
setmetatable(o, self)
self.__index = self
self.question = question or nil
self.answer = answer or nil
return o
end
function Condition:getCode()
return CONDITION_TYPE
end
function Condition:getQuestion()
return self.question
end
function Condition:getAnswer()
return self.answer
end
идея заключается в том, что в основном сценарии (script.lua),
- Я могу создать новый родительский класс.
- Каждый родительский класс может иметь несколько условий (ака вопросы).
Для меня первая часть работает. Тем не менее, я терпеть неудачу со второй частью. Всякий раз, когда я запускаю скрипт, я получаю два экземпляра второго вопроса. Для получения дополнительной информации см. Снимок ниже.
В идеале, я бы хотел, чтобы оба условия отображались ("are you happy?"
и "are you sad?"
), но в настоящее время это не так.
Не могли бы вы помочь мне с этим?
Возможно, вы должны использовать 'local o = o или {}'. – lhf
аргументы функции являются локальными по своей природе. o = o или {} в порядке! – Piglet