[解決済み] Luaのテーブルが空かどうかを判断する最も効率的な方法は?
2022-02-19 15:12:16
質問
テーブルが空であるかどうか(つまり、現在、配列形式の値もディクショナリ形式の値も含まれていない)を判断する最も効率的な方法は何ですか?
現在、私は
next()
:
if not next(myTable) then
-- Table is empty
end
もっと効率的な方法はないのでしょうか?
注
#
演算子はテーブルの配列形式の値に対してのみ作用するので、ここでは十分ではありません。
#{test=2}
とは区別がつきません。
#{}
どちらも0を返すからです。また、テーブル変数が
nil
というのも、私が探しているのは nil 値ではなく、0 のエントリを持つテーブル (すなわち
{}
).
解決するには?
あなたのコードは効率的ですが、間違っています。 (検討
{[false]=0}
.) 正しいコードは
if next(myTable) == nil then
-- myTable is empty
end
最大限の効率を得るために
next
をローカル変数に変換する、など。
...
local next = next
...
... if next(...) ...
(いつ
next
がローカルな場合、コードはプリミティブ関数
next
の配列への定時インデキシング操作によって行われます。
next
がグローバルなままだと
next
は、グローバル変数の値を含むハッシュテーブルをインデックスする必要があります。 このインデックス付けの操作はまだ一定時間ですが、ローカル変数の配列検索に比べるとかなり遅くなります)。
関連
-
[解決済み] Luaにおける演算子~=の意味とは?
-
[解決済み] .luaスクリプトを実行するにはどうしたらいいですか?[クローズド]。
-
[解決済み] "Unable to cast value to Object" エラーメッセージ
-
[解決済み] Luaでのインクリメント
-
[解決済み] Luaにおけるmath.random()とmath.randomseed()の違いについて
-
[解決済み] Luaはstdoutをコンソールウィンドウにリダイレクトします。
-
[解決済み] Luaでテーブルが要素を含んでいるかどうかを確認するには?
-
[解決済み] テーブルをコンソールにダンプするには?
-
[解決済み] luaテーブルのエントリーをキーで削除する方法は?
-
[解決済み] Luaテーブルのエントリ数を取得する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Luaで「nil値のインデックスを作成しようとした」エラー
-
[解決済み] Lua: グローバルな 'mapfinishes' (nil 値) に対して演算を実行しようとした。
-
[解決済み] LUA がグローバルな nil 値のインデックスを作成しようとした
-
[解決済み] Luaスクリプトのメモリ使用量を制限する?
-
[解決済み] Luaでのインクリメント
-
lua loadlib 関数がグローバルな 'loadlib' (nil 値) を呼び出そうとする
-
Lua5.3の落とし穴
-
luaの一般的なエラーの種類
-
[解決済み] <' の近くに予期しない記号がある
-
[解決済み] Luaでファイルからデータを読み込む方法