【问题标题】:Why if-elseif-else statement in Lua is not working in function?为什么 Lua 中的 if-elseif-else 语句不起作用?
【发布时间】:2015-03-13 04:30:10
【问题描述】:

我在 Lua 函数中使用的 elseif 有问题。我在 Windows 上使用 LuaEdit 2010,如果是第一个代码,程序会冻结。第二个有效,但非常丑陋,并且如果有更多 elseifs 也非常不可用。我认为它应该在这两种情况下都有效,但它不是,我不知道为什么,请帮助我。 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

【问题讨论】:

  • 什么冻结了,LuaEdit 还是脚本?
  • 这似乎是 LuEdit 问题,脚本运行并完成......有趣的是两个代码都在函数之外运行

标签: function if-statement lua freeze lua-edit


【解决方案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

【讨论】:

  • 击败我得出同样的结论 - 当我看到“1 个新答案”时,我正要点击发送。 :p
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多