質問
一度だけのluaファイルを実行し、そのLUAファイルを行うには、その後の試みはノーオペレーションになります持ってする方法があります場合は、
私は思っていました。
私はすでに/ ELSE / ENDIFだますかのC ++ヘッダーの#に似何かをすることについて考えてきました。これを実装するための標準的な方法がある場合、私は思ったんだけど。
ジェームズ
解決
だけでなく、require
はかなりのことを行います。
require "file" -- runs "file.lua"
require "file" -- does not run the "file" again
他のヒント
必要との唯一の問題は、それがモジュール名ではなく、ファイル名に動作することです。 (これは、ファイルシステム内のモジュールの位置を特定するために使用package.pathとpackage.cpathしないが)特に、必要とするパスと名前を処理しない。
あなたはパスと名を処理したい場合は、次のようにあなたがdofileに単純なラッパーを書くことができます:
do
local cache={}
local olddofile=dofile
function dofile(x)
if cache[x]==nil then
olddofile(x)
cache[x]=true
end
end
end
LHFの回答に基づいていますが、package
を利用し、あなたも一度これを行うことができます
package.preload["something"]=dofile "/path/to/your/file.lua"
その後、と使用します:
local x=require "something"
再びプリロードパッケージを取得します。それは少し虐待...
です所属していません StackOverflow