1

Lua では、1 つの数値キーがテーブルにない場合でも、長さは引き続きカウントされるようです。

> print(#{[1]=1,[2]=2,[4]=4})
4

しかし、この2つのインデックスをスキップすると、休憩で止まります

> print(#{[1]=1,[2]=2,[5]=5})
2

それは型にはまらないコンストラクターだけではありません。テーブルの作成後にスキップされたインデックスが作成された場合でも、それを超えてカウントされるため、ブレークは 1 つだけです。

> x={1,2}
> print(#x)
2
> x[4]=4
> print(#x)

これは実装エラーですか、それとも Lua の本来の動作方法ですか。なぜこのようになっているのですか?これに関するドキュメントへの参照は興味深いでしょう。

4

1 に答える 1

3

これが仕組みです。テーブルの長さは、テーブルが穴のないシーケンスである場合にのみ定義されます。http://www.lua.org/manual/5.2/manual.html#3.4.6を参照してください 。

于 2013-04-20T01:21:35.340 に答える