【发布时间】:2014-07-25 03:56:19
【问题描述】:
我刚开始使用 lua 编程,并按照本教程创建了某种 oop 结构:http://tylerneylon.com/a/learn-lua/
问题是,当我创建返回对象或对象表的函数并在构造函数中调用它时,它返回 nil。
这是我的第一个对象的代码:
require "ObjectB"
ObjectA = {}
function ObjectA:new(num)
newInstance = {}
newInstance.var = self:foo(num)
self.__index = self
return setmetatable(newInstance, self)
end
function ObjectA:foo(num)
return ObjectB:new(num)
end
,对于第二个对象:
ObjectB = {}
function ObjectB:new(num)
newInstance = {}
newInstance.num = num
self.__index = self
return setmetatable(newInstance, self)
end
当我这样做时:
myObject = ObjectA:new(5)
print(myObject.var.num)
,我收到错误:“错误:main.lua:14:尝试索引字段 'var'(一个 nil 值)”。 但是当我这样做时:
myObject = ObjectA:new(5)
myObject.var = ObjectA:foo(5) //setting var by calling foo outside of constructor
print(myObject.var.num)
,一切似乎都运行良好,打印结果确实是 5。谁能告诉我这种奇怪行为的原因是什么,或者我在这里做错了什么?
【问题讨论】: