load
文字列や関数からLuaコードを読み込み、チャンクを返す
lua
load (ld [, source [, mode [, env]]])
説明
指定された関数 ld
を使用して Lua コードを読み込み、コンパイルされたチャンクを返します。ld
はデータ提供関数で、呼び出されるたびに文字列を返し、これらの文字列が連結されてチャンクを構成します。ld
が空の文字列、nil
、または値を返さない場合、チャンクの終わりと見なされます。
エラーがなければ、コンパイルされたチャンクを Lua 関数として返します。エラーが発生した場合は、nil
とエラーメッセージを返します。返される関数の環境はグローバル環境です。
オプションの source
は、エラーメッセージやデバッグ情報に使用されるチャンク名です。省略すると、デフォルトは "=(load)"
です。
サンプルコード
lua
local f = load("return 1 + 1")
print(f()) -- 2
この例では、load
を使って計算式を実行します。
LuaJIT独自の拡張
LuaJITではUTF-8エンコーディングのソースコードを処理できるように拡張されています。
また引数mode
でモードパラメータを指定することで、チャンクが「テキストチャンク」または「バイナリチャンク」として処理されるかを制御できます。モードパラメータの詳細は以下の通りです。
- "t": テキストチャンクのみを許可します
- "b": バイナリチャンクのみを許可します
- "bt": テキストとバイナリの両方を許可します(デフォルト)
拡張版のサンプルコード
lua
local utf8_code = "return 'こんにちは、LuaJIT!'"
local f = load(utf8_code, nil, "t") -- "t" はテキストチャンクを指定
print(f()) -- 出力: こんにちは、LuaJIT!
この例では、UTF-8文字列を含むLuaコードをload関数で読み込み、"t"モードを指定してテキストチャンクとして処理します。
互換性
- Lua5.2
- LuaJIT独自の拡張あり