我的直覺告訴我,我犯了一個明顯的錯誤,但它逃避了我。我試圖通過使用以下示例代碼來從指定的「父」對象中創建「子」對象。Lua和對象產卵
local Ad = {
__index = Ad,
__tostring = function(self) return self.msg end,
__concat = function(a, b) return tostring(a)..tostring(b) end,
Initialize = function(self, msg, wgt)
if msg and msg ~= "" then
wgt = wgt or 1
self.msg, self.wgt, self.ranLog = msg, wgt, {}
end
end,
Increase = function(self)
if self.wgt < 9 then self.wgt = self.wgt + 1 end
end,
Decrease = function(self)
if self.wgt > 1 then self.wgt = self.wgt - 1 end
end
}
local function new(src, ...)
local o = setmetatable({}, src)
if src.Initialize then o:Initialize(...) end
return o
end
local ad = new(Ad, "Test Message")
print("Object - "..ad)
for k, v in pairs(ad) do print("", k, v) end
ad:Increase()
print("Modified Object - "..ad)
for k, v in pairs(ad) do print("", k, v) end
所以這是逐字與試圖調用方法初始化這是一個零值什麼失敗。鑑於在編輯之前我的示例代碼確實有效,是否已經定義了表格廣告?或者我在這裏某處有語法錯誤?
- 編輯,以替換代碼片段與該失敗
當我替換實際的代碼您的意見,這對我的作品。我認爲你太簡化了你的代碼。 – 2013-03-01 22:20:04
好的,這裏是(除了我將作爲示例留下的變量名稱)更多的表格以防萬一這是問題。 – user1901873 2013-03-02 00:04:11