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

很抱歉标题不太有帮助,但我真的不知道该怎么称呼这个。无论如何,我不知道这个起作用的原因是什么:

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
点赞
用户3572445
用户3572445

Case 1:

变量 entity 得到从 Entity.lua 返回的表。

当您在 Entity.lua 中调用 Entity:new() 时,所有变量初始化都在表(对象) entity 上执行。 所以,entity 有变量 xywidthheight。您将表分配给了 test 并打印了它。

这个方案可行。

Case 2:

local test = Entity:new()

在这里,变量 test 获取 new() 方法的返回值,该值在这种情况下为 nil,因为该函数不返回任何值。

它打印出一个错误,因为表 test 没有任何名为 xy 的键。

2018-02-04 10:11:09
用户8267449
用户8267449

如果你想要创建一个新的包含 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
2018-02-11 14:47:37