以下は、私が問題を抱えているシステムの要点です。私はself、.、および:.を理解しているようです。何かが足りないようです。何が起こっているかというと、「Object:setSomeObjectIsAttachedTo()」を呼び出すと、単純に「self」を印刷すると、テーブルアドレスが印刷されます。さらに一歩進んで「self.someObject」を印刷しようとすると、オブジェクトには「Object.new(args)」で最初に作成されたキーsomeObjectがあるため、nilが発生するはずはありません。さらに一歩進んでみましたが、nil 以来、そこに行くことさえできませんでした。助けてください!!
オブジェクトファイル
Object = {};
ObjectMeta = {__index = Object};
function Object.new(args)
Obj = {};
Object.someObject = OtherObject.new(args)
return setmetatable(Obj,ObjectMeta );
end
function Object:setSomeObjectIsAttachedTo()
--OtherObject instance Should set its attached property to
--This instance of Object
self.someObject.ObjectImAttachedTo = self;
end
--Calls after new to set the ObjectImAttachedTo Property, So it isnt nil
Object:setSomeObjectIsAttachedTo();
return Object;
その他のオブジェクト ファイル
OtherObject = {};
OtherObjectMeta = {__index = OtherObject};
function OtherObject.new(args)
Obj = {};
Obj.ObjectImAttachedTo =nil;
return setmetatable(Obj,ObjectMeta );
end
return Object;
アップデート
シーン
Scene = {};
ObjectContainer = {};
function Scene.new()
end
function Scene.addObjects()
local Object= require "Object"
local StartX = 50;
local StartY = 20;
local counter = 0;
for i=0, 17 do
ObjectContainer[i] = Object.new({x=StartX,y=StartY});
end
end
Scene.addObjects();
return Scene
end