いくつかのメンバー値を出力するメンバー関数を持つ単純なクラスを作成しようとしていますが、'self' を参照しようとするとエラーが発生します。
attempt to index global 'self' (a nil value)
実行しようとしているスクリプトは次のとおりです。
Test = {}
function Test:new()
T = {}
setmetatable(T, self)
self.__index = self
self.Name = "Test Object"
return T
end
function Test:printName()
print("My name is " .. self.Name) -- This causes the error
end
私も試しましself:Name
たが、同様のエラーが発生します。ここで何が間違っていますか?
編集:
printName()
C++ コードから関数を呼び出すことを忘れていました。Lua から関数を呼び出すと、正常に動作します。
Lua で Test オブジェクトを作成し、コールバック関数を実行します。コールバックは、次のように C++ で呼び出されます。
luabridge::LuaRef testObjectRef = ...; // This is populated from Lua, refers to the printName() function
testObjectRef(); // Calls the function
スクリプト内のコールバックは次のように行われます。
-- in Test:new()
self.Callback = LuaCallback(self.printName)
Helper.setCallback(self.Callback)
を参照しない限り、コールバック自体は正常に機能しself
ます。エラーは、私がそれをしようとしたときにのみ発生します。