0

编辑我得到了这个工作,我不确定这是否是正确的方法,但这就是现在的工作

我刚开始学习 Lua,我正在尝试弄清楚如何在文件之间传递表,以便我可以拥有更有条理的代码空间。我已经通读了《Lua 编程》一书,出于某种原因,我无法弄清楚我做错了什么。

我得到的问题是这个错误:

lua: Test2.lua:3: 尝试调用方法'New'(一个零值)

从这段代码:

--Test.lua----------------
module("Test", package.seeall)
vector = require "./Hump/vector"

Bot = {}

Bot.position  =  vector.new(0,0)

function Bot:New(object)
    object = object or {}
    setmetatable(object, self)
    self.__index = self
    return object
end


--Test2.lua------------------
require "Test"

Bot1 = Test.Bot:New()

print(Bot1.position)

据我了解,这个错误意味着它找不到新的方法,它实际上是未定义的。我认为需要在路径中导入文件?

4

1 回答 1

1

Bot是一个空表。

local B = {} -- initialize local B with new table
Bot = B -- Bot now references the same table as B

B = { position = vector.new(0,0) } -- here you create a NEW table, B ~= Bot now

function B:New(object) -- store New function in B table, Bot still empty

所以你要返回一个空表。

这里根本不需要两个变量。

local Bot = {
    -- stuff
}

function Bot:New(object)
    -- stuff
end

return Bot
于 2012-04-12T20:35:42.147 回答