私はCアプリケーションにLuaのを埋め込んだ、とテーブルを介して、私のCコードで作成された理由を把握しようとしています:Lua table.getn()は0を返しますか?
lua_createtable(L, 0, numObjects);
とLuaのに戻って、私が呼び出したときにゼロの結果を生成します次のペア:
print("Num entries", table.getn(data))
が
私は、各エントリ(ユーザデータの文字列)を介して歩くことができるように、データテーブルは、はっきりであります(ここで、「データ」は、上記lua_createtableにより作成されたテーブルです)経由で:
for key, val in pairs(data) do
...
end
しかし、なぜtable.getn(data)はゼロを返しますか? lua_createtableでテーブルを作成するときに、テーブルのメタに何かを挿入する必要がありますか?私はlua_createtableの使用例を見てきましたが、これはどこでも実行されていませんでした....
私がやろうとしていることを簡単に行う方法はありませんか? - 私はそれを直接反復せずに持っているテーブル内の要素の数(読み取りペア)を取得する? – jimt
テーブルに何かを変更し、演算子がその値を返すように '__len'メタメソッドをオーバーロードすると、テーブルサイズを手動で追跡できます。もちろん、このアプローチでは、多くのコーディング規律が必要です。テーブルサイズの値を更新するのを忘れてしまい、あなたが悩んでしまいます。 – ComicSansMS
「長さ演算子を使用する」と言うのは失礼ですが、例は言及していません。この答えが言っていることは、「配列Aの長さを得るには、#Aと入力してください。それは些細なように見えるかもしれませんが、テストして快適になるまでオペレータがあなたが思うように行動するとは想定できないので、多くの人々を捨てて疑いが生じます。それにもかかわらず。 – Dmitry