18

Luaで何かが空であるかどうかをチェックする条件を作成する適切な方法は何ですか? if x == ""動作してf x ~= ""いないようです。

4

4 に答える 4

17

Lua は動的型ベースの言語です。
どの変数も、nilbooleannumberstringtablefunctionthread、またはuserdataのいずれかの型を保持できます。
値のないテーブル ( 、グローバルが存在するテーブルを含む) 内の変数は、インデックス付けされたときに_Gの値を与えます。nilテーブル変数を に設定するとnil、基本的に「宣言解除」されます (エントリがメモリから完全に削除されます)。
変数が宣言されるlocalと、すぐに割り当てられない場合、値が与えられますnil. テーブル変数とは異なり、local変数をに設定すると、変数は「宣言解除」されnilませnil(値が になるだけです)。

Lua では、空の文字列 ( "") は依然として「値」です。これは単なるサイズ 0 の文字列です。

于 2012-04-26T07:23:19.977 に答える
4

私も最近この問題に遭遇しました。データベース値が「空白」(null ではない) の場合、LuaSQL は空の文字列を返していました。ハックなアプローチですが、これが私がそれを解決した方法です:

if (string.len(x) >= 1) then
    ...
end
于 2013-12-10T02:55:14.007 に答える
1

文字列にスペース、改行、またはその他の目に見えない文字が含まれている可能性があります。つまり、「空」だと思いますが、そうではありません。これは通常、ユーザーから入力を取得しているときに発生し、終了するには「enter」と入力する必要があります。「enter」は文字列で終了します。

必要なのは、文字列が「空白」であるかどうかを示す関数です-空か、スペース/タブ/改行のリストです。これを行う1つの方法は次のとおりです。

function isBlank(x)
  return not not tostring(x):find("^%s*$")
end

使用法:

if isBlank(x) then
  -- ...
end
于 2012-04-26T09:40:20.520 に答える