Новичок в LUA, у меня есть вопрос о моем скрипте

#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:

  1. Определите свое поведение
 local actions = {
   [1] = function() print("One");
   -- Same for any other numbers you want
   ["exit"] = function() os.exit() end; -- Close the whole program
}
 
  1. Получите ваш вклад
 local input = io.read() -- This returns a string
 
  1. Нормализуйте свой ввод
 input = input:lower() -- Make the whole string lowercase
input = tonumber(input) or input -- Try converting to number
 
  1. Получите действие, соответствующее вашему вводу
 local action = actions[input]
 
  1. Запустите действие, если оно было найдено
 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'