0

編集私はこれを機能させました、これがそれを行う正しい方法であるかどうかはわかりませんが、これは現在機能しているものです

私はLuaを学び始めたばかりで、ファイル間でテーブルを渡す方法を理解して、より整理されたコードスペースを作成しようとしています。私はLuaのプログラミングという本を読みましたが、何らかの理由で、自分が何を間違っているのか理解できません。

私が得ている問題はこのエラーです:

lua:Test2.lua:3:メソッド'New'(nil値)を呼び出そうとします

このコードから:

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

したがって、空のテーブルを返します。

ここでは2つの変数はまったく必要ありません。

local Bot = {
    -- stuff
}

function Bot:New(object)
    -- stuff
end

return Bot
于 2012-04-12T20:35:42.147 に答える