编辑我有这个工作,我不确定这是否是正确的方法,但这是现在可行的
我刚开始学习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)
据我所知,这个错误意味着它找不到新的方法,它实际上是未定义的。我以为需要在路径中导入文件?
答案 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