Каков правильный способ сделать условие, которое проверяет что-то или нет в Lua? if x == ""
и f x ~= ""
, похоже, не работают.Как проверить, пусто ли в Lua?
ответ
Lua - это язык с динамическим языком.
Любые переменный может содержать один из следующих типов: ноля, булева, номер, строки, таблицы, функции, нити или UserData.
Любая переменная в таблице (включая _G
, таблица, в которой находятся глобальные группы), без значения дает значение nil
при индексировании. Когда вы устанавливаете переменную таблицы в nil
, она существенно «ундекларирует» ее (полностью удаляя запись из памяти).
Если объявлена переменная local
, если она не назначена немедленно, ей присваивается значение nil
. В отличие от переменной таблицы, когда вы устанавливаете переменную local
в nil
, она делает не «undeclare» (она просто имеет значение nil
).
В Lua пустая строка (""
) по-прежнему является «значением» - это просто строка с нулевым размером.
Я думаю, что говорящий «_ Когда вы устанавливаете переменную в nil, она по существу« ундекларирует »it_» немного неточна — 'nil' - истинное значение, за исключением внутренних таблиц, так, например, локальная переменная со значением' nil' still тени в окружающих областях ... – snogglethorpe
Вы абсолютно правы; это утверждение было нацелено на пары таблиц, а не вообще на переменные вообще. Ответ был изменен, чтобы отразить это. – Deco
@snogglethorpe 'если ноль то \t печать ("ноль правда") еще \t печати ("ноль это не так!") end' -> ноль это не так! – handle
У вас, вероятно, есть пробелы, символы новой строки или другие невидимые символы в вашей строке. Поэтому вы думаете, что это «пусто», но это не так. Обычно это происходит, когда вы берете ввод от пользователя и набираете «enter» для завершения - «enter» заканчивается в строке.
Что вам нужно, это функция, которая сообщает вам, является ли строка пустой: либо пустой, либо список пробелов/вкладок/новых строк. Вот один из способов сделать это:
function isBlank(x)
return not not tostring(x):find("^%s*$")
end
Использование:
if isBlank(x) then
-- ...
end
это довольно неэффективно; 'not not string.find (x," ^% s * $ ")' – daurnimator
Ну, ваша версия окончательно (как только вы включите пропущенный вызов tostring). Я не уверен, что это значительно быстрее. Почему вы так думаете? – kikito
'string.gsub' выделял бы много памяти для этой операции (новая строка, которая несколько раз изменялась, один или два буфера для замещений) по сравнению с' string.find'. – Deco
Недавно я столкнулся с такой проблемой, как хорошо. LuaSQL возвращал пустые строки, если значение базы данных было «пусто» (но не null). Хакерный подход, но вот как я его решил:
if (string.len(x) >= 1) then
...
end
- 1. Как проверить, пусто ли sqlParameter?
- 2. Как проверить, пусто ли Listview
- 3. Как проверить, пусто ли ячейка массива?
- 4. Как проверить, пусто ли содержимое файла?
- 5. phpmailer, как проверить, пусто ли поле sintax
- 6. Как проверить, пусто ли текстовое поле VB.Net
- 7. Как проверить, пусто ли значение массива?
- 8. Как проверить файл Пусто
- 9. Чтобы проверить, пусто ли таблица или нет
- 10. Lua: как проверить, работает ли процесс
- 11. Проверить, существует ли база данных в Lua
- 12. проверить, находится ли точка в polygon lua
- 13. Проверить QuerySet пусто в Django
- 14. Как проверить переменные в lua?
- 15. Как проверить userdata в lua
- 16. Как проверить, не пусто ли текстовое поле в formview
- 17. Как проверить, пусто ли все входные значения в jquery?
- 18. Как проверить, пусто ли текстовое поле в диалоговом окне jquery
- 19. Как проверить DataList пусто в JavaScript
- 20. Как проверить, не поле DateTime не пусто или пусто?
- 21. Как проверить повторение таблицы lua?
- 22. Lua проверить, есть ли число/значение nan
- 23. iphone/цель-c, как проверить, пусто ли текстовое поле
- 24. Как проверить, пусто ли содержимое файла, пройдя массив имен файлов
- 25. Как проверить, пусто ли текстовый столбец SQL Server?
- 26. Как проверить, пусто ли поле выбора, используя JQuery/Javascript
- 27. Как я могу проверить, пусто ли поле редактора CK?
- 28. Как проверить, пусто ли одно значение столбца из курсора?
- 29. Как проверить, пусто ли поле из базы данных?
- 30. Как проверить, пусто ли текстовое поле или нет?
Как вы определяете "empty"? –
Пустой смысл, в нем ничего нет. – Village
Вы не можете «вводить» значения в переменные. Можете ли вы дать более точное определение? Поскольку переменная, содержащая строку '' '', не является пустой. Он имеет строку. А именно '' ''. Это допустимая строка. И поэтому ничего. –