为什么在 Lua 函数中使用 if-elseif-else 语句不起作用?

我有一个问题,与 Lua 函数中使用的 elseif 有关。我在 Windows 上使用 LuaEdit 2010,第一段代码的情况下,程序会卡死。第二段代码可以工作,但是相当丑陋,并且在使用更多 elseif 的情况下也不怎么实用。我认为这两种情况都应该能够工作,但事实上并没有,并且我不知道为什么,请帮助我。LuaEdit 似乎认为函数没有关闭。

这段代码不起作用

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
点赞
用户1514861
用户1514861

这两个例子在功能上看起来一样。我真的建议您在使用换行符、空格和缩进方面进行改进,因为您目前的写法看起来非常混乱。我的修改版本如下:

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
2015-03-12 10:26:38