0
編集を使用して、これはそれを行うための正しい方法であれば、私はわからないんだけど、これは私がちょうどLuaのを習い始め、今私はこの作業を持って、他のファイル内のテーブル
をどのような作品であり、I私はより組織的なコードスペースを持つことができるようにファイル間でテーブルを渡す方法を見つけようとしています。私はProgramming in Luaを読んでいます。何らかの理由で、私は何が間違っているのか理解できません。
私は取得しています問題は、このエラーである:
LUA:Test2.lua:3:このコードから '新規'(ゼロ値)
メソッドを呼び出すための試み:
--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)
私が理解する限り、このエラーは新しいメソッドを見つけることができないことを意味し、事実上未定義です。私はパス内のファイルをインポートする必要があると思った?
ええ、私は、この問題を回避するための正しい方法はモジュール( "Test"、package.seeall)を使用して作業しているいくつかの研究の後、行3が本当にBposition = 0でなければならないことに気付きましたか? – RedShft
投稿したコードでは、「Bot」は空のテーブルなので、それを超えて変更を加えました。 '' __index = 'を' 'Bot'自体に設定するべきです。なぜなら、それはメタテーブルだからです。これがクラス変数(つまり、 'Bot'のすべてのインスタンスで同じです)でなければ、' Bot'に 'position ='を入れたくありません。 positionが 'Bot'インスタンスごとに一意の状態であれば、' Bot'コンストラクタでオブジェクトを初期化する必要があります。 – Mud
私の計画は、Bot型のすべてに対してクラス変数を配置することでした。 self .__ index = selfとselfの間には何が違うのですか?index = Bot? – RedShft