如何解决网标中的"expected command"?



我想让Netlogo里的乌龟"呆在原地";点击20次,然后继续(只是继续),但我不断得到"预期的命令"。错误。你知道我的括号哪里不对吗?

谢谢!

to solar-battery  ;; trying to ask turtles to move forward after being stationary for 20 
clicks
ask turtles [
[ifelse (patch-here = destination)                                   
[
if (ticks - ticks-since-here > ticks-to-stay-on-patch patch-here) 
[
set ticks-since-here 20
set destination one-of patch]]]
[face destination
forward 1
if [patch-here = destination]
[set ticks-since-here ticks]]]
end

支持思想

由于注释不允许换行和缩进…下面是一个代码格式化的示例。当您变得更加熟练时,您可以尝试其他格式化方案,但在此之前,严格的代码格式化是"自动调试"的一种方法。这可以帮助你避免一些基本的错误——这样你就可以专注于那些棘手的错误。

to do-stuff
ask turtles with [ pxcor > 0 ] ;; this is fine.
[ ;; open of code block
jump 1
if (pcolor = white)
[ ;; open code block
rt 90 jump 1
] ;; close block
] ;; close block
end

在模拟SWITCH结构时,括号的其他安排可以帮助而不是混淆:

进行开关时,保持条件和动作非常短。如果它们很长,将条件包在一个记者中。同样,将操作包装在过程中,除非它非常短。

if-else (condition1) [ action 1 ][
if-else (condition2) [ action 2 ][
if-else (condition3) [ action 3 ][
if-else (condition4) [ action 4 ][
;; OTHERWISE
default-action
]]]] ;; one close bracket for each condition.

这种格式使得添加、删除或重新排序条件非常容易,而不必移动括号、改变缩进或不匹配括号。

的解决方案编辑添加:这里是问题的代码,重新格式化。现在能看到错误了吗?

to solar-battery
;; trying to ask turtles to move forward
;; after being stationary for 20 clicks
ask turtles
[ 
[ ifelse (patch-here = destination)                                   
[
if (ticks - ticks-since-here > ticks-to-stay-on-patch patch-here) 
[
set ticks-since-here 20
set destination one-of patch
]
]
] 
[
face destination
forward 1
if [patch-here = destination]
[
set ticks-since-here ticks
]
]
]
end

预期命令提示:

在第一个括号之后,NetLogo需要一个命令。但是你有另一层括号。所以你会得到错误:Expected Command.

相关内容

  • 没有找到相关文章

最新更新