文書の出典
- 出典
- Lua 5.5.1 Documentation
- 上流バージョン
- Lua 5.5.1
- 文書状態
- 翻訳
4.2 – Cクロージャー
C関数を作成するとき、その関数にいくつかの値を関連付けて、Cクロージャーを作成できます(lua_pushcclosureを参照)。これらの値は上位値と呼ばれ、関数が呼び出されるたびにその関数からアクセスできます。
C関数が呼び出されるたびに、その上位値は特定の疑似インデックスに置かれます。これらの疑似インデックスはマクロlua_upvalueindexによって生成されます。関数に関連付けられた最初の上位値はインデックスlua_upvalueindex(1)にあり、以降も同様です。現在の関数の上位値数よりnが大きい(ただし、クロージャーの上位値最大数に1を加えた256以下)lua_upvalueindex(n)へのアクセスは、許容されるものの無効なインデックスを生成します。
Cクロージャーは、対応する上位値の値を変更することもできます。