2

http://lua-users.org/wiki/CppLuaDataPassingには、C++からLuaテーブルを作成するための次のコードがあります。

   // set first element "1" to value 45
   lua_pushnumber( state, 1 );
   lua_pushnumber( state, 45 );
   lua_rawset( state, -3 );

   // set the number of elements (index to the last array element)
   lua_pushliteral( state, "n" );
   lua_pushnumber( state, 1 );
   lua_rawset( state, -3 );

最後のブロックは、その例に基づいて、Luaテーブルに最後の配列要素へのインデックスを格納する「n」という特別な意味のキーがあることを意味しているようです。

しかし、 LuaManualにはそれへの参照が見つかりませんでした。

  • 私の推測は正しいですか、それとも間違っていますか?

  • それが正しければ、誰かがこの「n」キーを説明する良い参考資料を教えてもらえますか?

  • 間違っている場合、例の2番目のコードブロックの意味は何ですか?

  • そして、それが正しい場合は、Luaの読み取り用にC ++で有効なテーブルを作成するために必要なこの最後のインデックス割り当てを行っています(Luaコードがテーブルを変更しないと仮定します)

4

2 に答える 2

2

これは、テーブルのサイズを保持するための規則でした。lua 5.1では、#オペレーターに有利な慣行として、人々がテーブルに詰め込んでいるデータと魔法のように競合することがあるため、非推奨になっていると思います。

于 2012-12-06T22:16:58.313 に答える
0

これを見てください:http ://www.lua.org/pil/19.1.html

n配列の長さを表します。getn()これは、テーブル内の要素の量を返すだけの関数で最も一般的に使用されます。

于 2012-12-06T22:12:53.287 に答える