1

requireLUA でキーワードを使用して、関数を含むファイルを含めようとしています。LUA を初めて使用するので、最初に簡単な印刷機能を試しました。

グローバル関数.lua

local globalfunctions = {}

function printSomething()
    print("OOOK")
end

return globalfunctions

次に、この関数の書き込みを呼び出そうとしました:

local m = require "globalfunctions"
m.printSomething()

しかし、 「フィールド printSomething (nil 値) を呼び出そうとしています」というエラーが発生しまし た。

4

2 に答える 2

2

問題は、関数を宣言するが、それをモジュールに追加しないことです。

によって返されるモジュールに関数を実際に格納するには、モジュールrequireの最後に返すテーブルに関数を追加する必要があります。

globalfunctions.printSomething = printSomething

globalfunctions は欺瞞的な名前の選択であることに注意してください。a) それ自体がローカル変数である b) 含まれる関数もグローバルではなく、モジュールに含まれているためです。

第二に、理想的には、ほとんどの人が期待するようにモジュールを動作させるには、グローバル名前空間を汚染しないように関数をローカルにします (既存の変数をオーバーライドする可能性があります)。

于 2013-10-03T16:04:13.943 に答える
1

グローバル関数をローカル値にしました。つまり、ローカルでのみ操作できます。ローカルをグローバルに変更してみてください。

于 2013-10-03T16:03:42.497 に答える