Почему оператор if-elseif-else в Lua не работает в функции?
У меня проблема с elseif, который используется в функции Lua. Я использую LuaEdit 2010 в Windows, и в случае первого кода программа зависает. Второй работает, но довольно уродлив, и в нем есть множество других вещей, которые также довольно непригодны. Я думаю, что это должно работать в обоих случаях, но это не так, и я не знаю почему, пожалуйста, помогите мне. Lua Edit кажется, что функция не закрыта. Этот код не работает
function read_this()
char=read_char()
word=""
if char=="~" then word = word..char
char=read_char()
if char == "+" then
formating=true
word=word..char
elseif char == "-" then
formating=false
word = word..char
else word = word..char
end
write(word,file2)
else print("something what is not problem")
end
end
Этот код работает для меня.
function read_this()
char=read_char()
word=""
if char=="~" then word = word..char
char=read_char()
if char == "+" or char == "-" then
if char == "+" then formating=true end
if char == "-" then formating=false end
word = word..char
else word = word..char
end
write(word,file2)
else print("something what is not problem")
end
end
1 ответ
Оба примера выглядят функционально одинаковыми для меня. Я бы действительно поработал над тем, чтобы вы использовали переводы строки, пробелы и отступы, потому что это выглядит очень грязно. Ваш первый пример я бы написал как
function read_this()
char = read_char()
word = ""
if char == "~" then
word = word .. char
char = read_char()
if char == "+" then
formating = true
word = word .. char
elseif char == "-" then
formating = false
word = word .. char
else
word = word .. char
end
write(word,file2)
else
print("something what is not problem")
end
end
Я также замечаю, что в каждом случае вы делаете word = word .. char
В любом случае, нет необходимости помещать его в каждое выражение if и ставить после него так:
function read_this()
char = read_char()
word = ""
if char == "~" then
word = word .. char
char = read_char()
if char == "+" then
formating = true
elseif char == "-" then
formating = false
end
word = word .. char
write(word,file2)
else
print("something what is not problem")
end
end