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

Love2D Lua no idea why this doesn't work

为无用的标题道歉,但我真的不知道该怎么称呼它。无论如何,我不知道为什么会这样:

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 简单包含:

local Entity = {}

function Entity:new(x,y,w,h)
  self.x = x
  self.y = y
  self.width = w
  self.height = h
end

return Entity

案例一:

变量 实体 得到 table 这是 return 从 Entity.lua 编辑而来。

当您在 Entity.lua 中调用 Entity:new() 时,所有变量初始化都在 table(object) entity 上执行。因此,entity 有变量 x、y、宽度和高度。您将 table 分配给 test 并打印了它。

有效。

案例二:

local test = Entity:new()

这里变量 test 取方法 new() 的 return 值,在这种情况下为 nil,因为函数没有 return 任何值.

它打印错误,因为 table test 没有任何名为 x 和 y 的键。

如果你想用 x、y、w、h 创建一个新的 table,你可以这样做:

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