Lua代码错误(这里是新手)

时间:2016-01-17 19:22:56

标签: lua

这段代码出了什么问题?

if key == 'w' then
    if charastate == neutral then 
        charamov = up 
    end
    elseif charastate == lr then
        charastate = neutral then
            charamov = up
    end
end

错误是:

  

“'然后'附近的意外符号”

如果改为“和”

也没关系

谢谢,我正在努力学习,但是很累。

4 个答案:

答案 0 :(得分:3)

错误消息告诉您省略最后一个then,因为它未与if配对。

正确缩进代码可以帮助您查看代码。

答案 1 :(得分:2)

我相信你错过了这里的if声明:

elseif charastate == lr then
    charastate = neutral then
        charamov = up
end

我还建议您使用if运算符,而不是嵌套and语句,以便更轻松地编辑和阅读代码:

if key == 'w' and charastate == neutral then
    charamov = up
elseif key == 'w' and charastate == lr then
    charamov = up
end

答案 2 :(得分:0)

试试这段代码。您正在使用"然后"其他if语句两次。

if key == 'w' then
   if charastate == neutral then 
      charamov = up
   elseif charastate == lr then
        charastate = neutral
        charamov = up
   end
end

答案 3 :(得分:0)

为了帮助理解原始代码的错误,我注释掉了相应的部分,所以:

if key == 'w' then
    if charastate == neutral then 
        charamov = up 
    --[[ end BAD(1) ]]
    elseif charastate == lr then
        charastate = neutral --[[ then BAD(2) ]]
        charamov = up
    end
end

这两个问题都是语法障碍。 1)if-elseif语句的格式为if <cond> then <statements> [elseif <statements>]+ end。请注意,end之前没有elseif。 2)then关键字不适用。正确缩进后的原始代码如下所示:

if key == 'w' then
    if charastate == neutral then 
        charamov = up 
    end
elseif charastate == lr then
    charastate = neutral then -- this is syntax error
    charamov = up
end
end -- this end is excessive, but parser can't even reach here

(对程序逻辑几乎没有任何意义。)