Почему оператор 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
Другие вопросы по тегам