文字列をロードストリングして関数として実行しようとしています。これが私の問題です:
a = "hello"
loadstring("print(a)")()
上記のコードで、それ以外のvars / funcsを使用したくありません。私の目標は、ロードストリング内でisが定義されていないため、上記のスクリプトをprintnilにすることです。
質問が非常に短い場合は申し訳ありません。私の問題を説明するのは難しかった。
あなたの変数a
は地球環境に住んでいます。チャンクに表示されないようにするには、別の環境を与える必要があります。Lua 5.1では、次のようにします。
a = "hello"
local chunk = loadstring("print(a)")
setfenv(chunk, {print = print})
chunk()
Lua 5.2以降では、次のようにします。
a = "hello"
load("print(a)", nil, "t", {print = print})()
それprint
は魔法ではないことに注意することが重要です。私のように明示的に配置しない限り、新しい環境にはなりません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加