Skip to content

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独自の拡張あり

関連項目