#lua
#lua
Вопрос:
Привет, я новичок в LUA и вообще новичок в написании сценариев / кодировании, это сценарий, о котором я говорю
print("Type a Number!")
repeat
input = io.read()
if input == "10" then
print("Ten")
elseif input == "7" then
print("Seven")
elseif input == "1" then
print("One!")
elseif input == "exit" or input == "Exit" then
print("Exiting...")
else
print("incorrect")
end
until input == "Exit" or input == "exit"
Я вроде как чувствую, что слишком много elseif, но я не хотел печатать «неверно» при вводе exit или Exit, поэтому моим решением было добавить еще один elseif перед командой else. Может ли это быть более упрощенным, или я ничего не могу с этим поделать, и это хорошо
И еще один вопрос, почему это не работает
num = 10
input = io.read()
If input == num then
print("Ten")
end
Или этот код
num = 10
input = io.read()
If input == 10 then
print("Ten")
end
Почему код выше, где у меня есть логическое значение со строкой после if, работает только
Комментарии:
1. 1)
If
это не то же самое, чтоif
. 2)10
не совпадает с"10"
3)io.read()
возвращает строку, вам нужноtonumber()
преобразовать ее в число перед сравнением с другим числом
Ответ №1:
- Определите свое поведение
local actions = {
[1] = function() print("One");
-- Same for any other numbers you want
["exit"] = function() os.exit() end; -- Close the whole program
}
- Получите ваш вклад
local input = io.read() -- This returns a string
- Нормализуйте свой ввод
input = input:lower() -- Make the whole string lowercase
input = tonumber(input) or input -- Try converting to number
- Получите действие, соответствующее вашему вводу
local action = actions[input]
- Запустите действие, если оно было найдено
if action then
action()
else
print("Error! Could not handle input: ", input)
end
Комментарии:
1. о, на самом деле имеет смысл, что другие 2 примера кода не сработали, я не знал, что io.read() предназначен только для строк… Существует ли аналогичный тип для чисел или мне всегда приходится преобразовывать его в число? Спасибо за ответы, очень полезные :))))
Ответ №2:
local inputs = {
['1'] = 'One!'
, ['7'] = 'Seven'
, ['10'] = 'Ten'
, exit = 'Exiting...'
, Exit = 'Exiting...'
}
local input
print 'Type a Number!'
repeat
input = io.read ()
print (inputs [input] or 'incorrect') -- Lua 'nullsafe' operator.
until input == 'Exit' or input == 'exit'