这段代码出了什么问题?
if key == 'w' then
if charastate == neutral then
charamov = up
end
elseif charastate == lr then
charastate = neutral then
charamov = up
end
end
错误是:
“'然后'附近的意外符号”
如果改为“和”
也没关系谢谢,我正在努力学习,但是很累。
答案 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
(对程序逻辑几乎没有任何意义。)