だから私はこれに似たluaファイルを持っています:
x = { __index = x}
constructor = function()
local o = {}
return setmetatable(o,x)
end
function x:print()
print("hello world")
end
インタープリターに次のように入力します。
dofile "file.lua"
a = constructor()
a:print() --error attempt to call method 'print' (a nil value)
dofile "file.lua"
a = constructor()
a:print() -- hello world
この方法は、ファイルを 2 回目にインポートしたときに機能しますが、最初のインポートでは機能しません。どうしてこれなの?順序を変更してみましたが(コンストラクター関数を最後に配置)、同じでした。