我是Lua的业余爱好者,我写了这段代码但未能编译,我检查了语法的结构,发现这是一个匹配项,所以我真的不知道出什么问题了,它说 18:预计在“ startFishing”附近的“ end”(在第16行关闭“ if”) 但是我为什么要那样做? BTW startFishing是我先前在同一文件中定义的另一个功能。
function detectSuccess()
local count = 0;
for x = 448, 1140, 140 do
color = getColor(x, 170);
if color == 0xffffff then
return false
startFishing()
else
return true
end
end
end
答案 0 :(得分:6)
我们正确设置了代码格式....
function detectSuccess()
local count = 0;
for x = 448, 1140, 140 do
color = getColor(x, 170);
if color == 0xffffff then
return false
startFishing()
else
return true
end
end
end
detectSuccess()
startFishing()
语句悬空。从句法上讲,返回之后唯一可以发生的是else或end。
那是lua解析器的抱怨。
来自lua : programming in lua 4.4
出于语法原因,中断或返回只能显示为块的最后一条语句(换句话说,显示为块中的最后一条语句,或者恰好是结尾处的最后一条语句,否则或直到)。
如果要调用startFishing
,则必须在返回之前。例如
function detectSuccess()
local count = 0;
for x = 448, 1140, 140 do
color = getColor(x, 170);
if color == 0xffffff then
startFishing() -- moved before the return
return false
else
return true
end
end
end
答案 1 :(得分:4)
在return
之后的同一块中不能包含语句。我猜你的意思是:
if color == 0xffffff then
startFishing()
return false
else
return true
end
缩进代码将帮助您查看语法问题。