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 の本来の動作方法ですか。なぜこのようになっているのですか?これに関するドキュメントへの参照は興味深いでしょう。