Love2D Lua不知道为什么这不起作用

时间:2018-02-04 09:37:52

标签: lua love2d

为无益的头衔道歉,但我真的不知道该怎么称呼它。无论如何,我无法解释为什么会这样:

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

2 个答案:

答案 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