为无益的头衔道歉,但我真的不知道该怎么称呼它。无论如何,我无法解释为什么会这样:
local entity = require "entity"
entity:new(5,10,15,6)
local test = entity
print(test.x,test.y)
......但这并不......
local entity = require "entity"
local test = entity:new(5,10,15,6)
print(test.x,test.y)
Entity.lua simple包含:
local Entity = {}
function Entity:new(x,y,w,h)
self.x = x
self.y = y
self.width = w
self.height = h
end
return Entity
答案 0 :(得分:2)
案例1:
变量实体获取从Entity.lua返回的表。
当您在Entity.lua中调用Entity:new()时,所有变量初始化都在表(对象)实体上执行。因此,实体具有变量x,y,width和height。您已将表格分配到测试并打印出来。
有效。
案例2:
local test = Entity:new()
。
这里变量 test 获取方法new()的返回值,在这种情况下为nil,因为函数不会返回任何值。
它会输出错误,因为表测试没有任何名为x和y的键。
答案 1 :(得分:0)
如果你想用x,y,w,h创建一个新表,你可以这样做:
function Entity.new(x,y,w,h)
local newEntity = {}
newEntity.x = x
newEntity.y = y
newEntity.width = w
newEntity.height = h
return newEntity
end
或(但不太可读):
function Entity.new(x,y,w,h)
return {x = x, y = y, width = w, height = h}
end