lua loadstring



Lua Loadstring



loadstringには境界効果はなく、チャンクを独自の内部実装の無名関数にコンパイルするだけです。彼についての通常の誤解は、それらが関数を定義するというものです。 Luaの関数定義は、コンパイル時ではなく実行時に発生する割り当てです。

loadstring関数は強力ですが、使用するときは注意が必要です。問題を解決する他の簡単な方法がないことを確認してください。


f = loadstring('i = i * 3')
i = 1
f()
print(i)

f = loadstring('local a = 10 return a + 20')
print(f())

3
30


loadstringによって返される関数は通常の関数と同じであり、複数回呼び出すことができます。

f = loadstring('i=i+1return i')
local j = 0
i = 1
repeat
print(f())
j = j+1
until j>=2

2
3