質問

一度だけの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"

再びプリロードパッケージを取得します。それは少し虐待...

です
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top