3

だから私はこれに似た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 回目にインポートしたときに機能しますが、最初のインポートでは機能しません。どうしてこれなの?順序を変更してみましたが(コンストラクター関数を最後に配置)、同じでした。

4

1 に答える 1