1

私の現在のプロジェクトでは、私のmain.lua. 次に、プロジェクトにグローバルとして追加しようとしているものを使用する 3 番目のファイルが必要です。ただし、attempting to index the global valueそうするとエラーが発生します。

たとえば、次の例では、プロジェクト内で test1:hello() をグローバルに使用できるようにするために dofile() を使用していますが、test2.lua を要求するプロセス中にエラーが発生します。

PANIC: unprotected error in call to Lua API (test2.lua: attempt to index global 'test1' (a nil value))

この場合、test1 はすでにグローバルとして存在するべきではありませんか? どうすればこれを回避できますか?

main.lua:

dofile('test1.lua')
require('test2')

test1.lua

test1 = {}
function test1:hello()
   print("hello")
end

test2.lua

module('test2')

test1:hello()
4

2 に答える 2

5

main.luaで:

require("test2.lua")

する必要があります:

require("test2")

test2.luaでは、test1の値を確認できるように、module()の2番目のパラメーターとしてpackage.seeallを渡す必要がありました。

module('test2', package.seeall)
test1:hello()
于 2012-04-09T21:05:58.207 に答える
0

コードをテストしたところ(プレーンなLua 5.1で)、それは私の側で機能しました(ただし、置き換える必要require('test2.lua')がありましrequire('test2')た)。

もしかしたらあなたの環境の問題かもしれません。このLuaコードをどこで実行していますか。グローバル宣言を許可しますか?

はいの場合、質問で言っていることを正確に行っていないように聞こえます。

次のようなことを確認してください。

  • dofile('test1.lua')実際に実行される前にrequire('test2.lua')
  • 変数名は問題ありません(たとえば、tset1代わりtest1にどこかに書いていません)
于 2012-04-09T20:56:41.503 に答える