2016-06-21 78 views
0

私は現在、特にLOVE2Dを使って、Luaでかなり詳細なプロジェクトを進めています。私は現在、私のプロジェクトのさまざまな部分にアクセスするためにrequire'file'を使用していますが、これは非常に貧弱な形式のようです。私は同じ名前の異なるファイルからテーブルを上書きするという問題に遭遇しました。これを行うには、専門的でクリーンな方法が必要ですが、私はそれを見つけることができませんでした。誰かが私を助けることができますか?Luaの別のファイルから関数/変数/テーブルを呼び出す

+0

同じ名前のモジュールが2つありますか?同じ名前の2つのグローバルテーブルだけ?あなたの質問を明確にする例を挙げてください。 –

答えて

3

を使用すると、requireです。正しい方法です。

モジュールは、読み込まれたときに実行される関数と考えることができます。戻り値はキャッシュされ、後続の要求コールで返されます。関数の範囲を制限するために変数localを使用するのと同じように、モジュール内で同じことを行うことができます。

私はあなたのモジュールがグローバルテーブルとして実装されている推測している:

mymodule = {} 

function mymodule.foo() 
    return 'bar' 
end  

そして、あなたは次のようにモジュールをロード:ちょうどlocal変数にモジュールテーブルを変更し、それを返す

require 'mymodule' 

local mymodule = {} 

function mymodule.foo() 
    return 'bar' 
end 

return mymodule 

次に、任意の名前でモジュールを読み込むことができます。

local mymodule = require 'mymodule' 

グローバル変数を作成しないため、他のモジュールを上書きする心配はありません。

上記の例は、lua-users.orgのWebサイトのModule Tutorialからのものです。モジュールの作成に関する詳細はこちらをご覧ください。また、How to write Lua modules in a post-module() worldも読む価値があります。

関連する問題