myTable = {}
myTable["foo"] = 12
myTable["bar"] = "blah"
print(#myTable) -- this prints 0
キーの数を取得するために、実際にテーブル内の項目を反復処理する必要がありますか?
numItems = 0
for k,v in pairs(myTable) do
numItems = numItems + 1
end
print(numItems) -- this prints 2
# 演算子と table.getn() の両方を試してみました。table.getn() はあなたが望むことをするだろうと思っていましたが、# と同じ値、つまり 0 を返していることが判明しました。辞書は必要に応じて nil プレースホルダーを挿入するようです。
キーをループしてカウントすることは、辞書のサイズを取得する唯一の方法のようです。
テーブル t の長さは、t[n] が nil ではなく、t[n+1] が nil となる任意の整数インデックス n として定義されます。さらに、t[1] が nil の場合、n はゼロになる可能性があります。1 から与えられた n までの nil 以外の値を持つ通常の配列の場合、その長さはちょうど n (最後の値のインデックス) です。配列に「穴」(つまり、他の非 nil 値の間にある nil 値) がある場合、 #t は、nil 値の直前の任意のインデックスにすることができます (つまり、そのような nil 値を末尾と見なすことができます)。アレイの)。
したがって、長さを取得する唯一の方法は、それを反復することです。
Lua はテーブルを 2 つの別個の部分として格納します: ハッシュ部分と配列部分。ペア()関数を使用してテーブルを反復処理する必要がある「ハッシュ」値。