在其他文件中使用表格

编辑我做到了这一点,不确定我这样做是否正确,但这是目前有效的方法

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

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

lua: Test2.lua:3: attempt to call method 'New' (a nil value)

这是代码:

--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)

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

原文链接 https://stackoverflow.com/questions/10130954

点赞
stackoverflow用户501459
stackoverflow用户501459

Bot 是一个空表格。

local B = {} -- 用新表格初始化本地变量 B
Bot = B -- 现在 Bot 引用与 B 相同的表格

B = { position = vector.new(0,0) } -- 这里你创建了一个新的表格,B ~= Bot

function B:New(object) -- 存储 New 函数在 B 表格内,Bot 仍为空

所以你返回了一个空表格。

根本不需要两个变量。

local Bot = {
    -- 整些东西
}

function Bot:New(object)
    -- 整些东西
end

return Bot
2012-04-12 20:35:42