Luaで何かが空であるかどうかをチェックする条件を作成する適切な方法は何ですか? if x == ""
動作してf x ~= ""
いないようです。
4 に答える
Lua は動的型ベースの言語です。
どの変数も、nil、boolean、number、string、table、function、thread、またはuserdataのいずれかの型を保持できます。
値のないテーブル ( 、グローバルが存在するテーブルを含む) 内の変数は、インデックス付けされたときに_G
の値を与えます。nil
テーブル変数を に設定するとnil
、基本的に「宣言解除」されます (エントリがメモリから完全に削除されます)。
変数が宣言されるlocal
と、すぐに割り当てられない場合、値が与えられますnil
. テーブル変数とは異なり、local
変数をに設定すると、変数は「宣言解除」されnil
ませんnil
(値が になるだけです)。
Lua では、空の文字列 ( ""
) は依然として「値」です。これは単なるサイズ 0 の文字列です。
私も最近この問題に遭遇しました。データベース値が「空白」(null ではない) の場合、LuaSQL は空の文字列を返していました。ハックなアプローチですが、これが私がそれを解決した方法です:
if (string.len(x) >= 1) then
...
end
文字列にスペース、改行、またはその他の目に見えない文字が含まれている可能性があります。つまり、「空」だと思いますが、そうではありません。これは通常、ユーザーから入力を取得しているときに発生し、終了するには「enter」と入力する必要があります。「enter」は文字列で終了します。
必要なのは、文字列が「空白」であるかどうかを示す関数です-空か、スペース/タブ/改行のリストです。これを行う1つの方法は次のとおりです。
function isBlank(x)
return not not tostring(x):find("^%s*$")
end
使用法:
if isBlank(x) then
-- ...
end