在其他文件中使用表

时间:2012-04-12 20:04:47

标签: lua

编辑我有这个工作,我不确定这是否是正确的方法,但这是现在可行的

我刚开始学习Lua,我正在试图弄清楚如何在文件之间传递表格,以便我可以拥有更有条理的代码空间。我读完了Lua中的Programming,由于某种原因,我无法弄清楚我做错了什么。

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

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)

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

1 个答案:

答案 0 :(得分: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