1. ホーム
  2. lua

[解決済み] Luaテーブルのエントリ数を取得する方法は?

2022-04-23 04:55:43

質問

しかし、なぜか答えが見つからない。Luaの # 演算子は整数のキーを持つエントリのみをカウントし、同様に table.getn :

tbl = {}
tbl["test"] = 47
tbl[1] = 48
print(#tbl, table.getn(tbl))   -- prints "1     1"

count = 0
for _ in pairs(tbl) do count = count + 1 end
print(count)            -- prints "2"

の数を求めるにはどうすればよいのでしょうか? すべて を数えることなく入力することができますか?

解決方法は?

質問ですでに解決しています -- 唯一の方法は、テーブル全体を pairs(..) .

function tablelength(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

また、"#"演算子の定義は、もう少し複雑であることに注意してください。この表を取り上げて説明しましょう。

t = {1,2,3}
t[5] = 1
t[9] = 1

マニュアルによると いずれかの 3, 5, 9 は #t . 唯一まともな使い方は、nil 値のない連続した 1 つの部分の配列です。