Skip to content

lua_getupvalue

クロージャのアップバリューについての情報を取得します。

[-0, +(0|1), -]

c
const char *lua_getupvalue (lua_State *L, int funcindex, int n);

説明

クロージャのアップバリューについての情報を取得します。(Lua関数の場合、アップバリューは関数が使用する外部のローカル変数であり、結果としてクロージャに含まれます。)lua_getupvalueはアップバリューのインデックスnを取得し、アップバリューの値をスタックにプッシュし、その名前を返します。funcindexはスタック内のクロージャを指します。(アップバリューには特定の順序がなく、関数全体を通してアクティブです。したがって、任意の順序で番号付けされます。)

インデックスがアップバリューの数を超える場合、NULL(何もプッシュせず)を返します。C関数の場合、この関数はすべてのアップバリューの名前として空の文字列""を使用します。

サンプルコード

c
const char *name = lua_getupvalue(L, 1, 1);
if (name) {
    printf("アップバリュー名: %s\n", name);
}

このコードは、インデックス1にある関数の最初のアップバリューの名前を取得して表示します。

互換性

  • Lua5.1

関連項目

  • lua_setupvalue
  • lua_getlocal