2

lua_rawlen でテーブルの長さを取得しようとしています。コードは次のようになります

lua_createtable(L, 0, 0);

lua_pushstring(L, "k0");
lua_pushstring(L, "v0");
lua_settable(L, -3);
lua_pushstring(L, "k1");
lua_pushstring(L, "v1");
lua_settable(L, -3);

printf("%d\n", lua_rawlen(L, -1));

出力は 0 です。2 のはずですが、何が問題なのですか? アドバイスをありがとう。

4

1 に答える 1

3

この関数は、オプションのメタメソッドを呼び出さずにシーケンスlua_rawlenの長さを返します。これは Lua function に相当し、そのようなメタメソッドがない場合の演算子と同じです。__lenrawlen#__len

文字列キーのみを配置するため、テーブルはシーケンスではありません。シーケンスのキーは、 1から始まる連続した整数でなければなりません。キーの"k0"との代わりに、とをそれぞれ試してみてください。"k1"12

例:

lua_createtable(L, 0, 0);

lua_pushstring(L, "v0");
lua_rawseti(L, -2, 1);
lua_pushstring(L, "v1");
lua_rawseti(L, -2, 2);

printf("%d\n", lua_rawlen(L, -1));
于 2012-10-23T09:55:11.563 に答える