报告内循环错误
Report inner loop error
代码:
to-report check-wall
hatch 1[
set color grey
set size ([size] of one-of walls) / 2
while [distance myself < (2 * ([size] of myself)) and (pycor + ([size] of one-of walls) / 2) < max-pycor ]
[
fd ([size] of one-of walls) / 2
if any? walls in-radius size
[
report true
]
]
die
]
report false
错误:
REPORT must be immediately inside a TO-REPORT. error while inboxturtle
260 running REPORT called by procedure CHECK-WALL
请忽略代码的功能。我没有详细说明,因为我认为不需要。
注意: 我希望当内部 if 为真时停止该方法并 return。因此,创建一个变量并将其设置为真,如果然后在最后 returning 不是一个可能的选择。
这是 NetLogo 语言的一个不幸的限制,即 report
不能在 ask
、hatch
和类似的原语中使用。
但在这种情况下,即使不存在限制,代码仍然是不正确的,因为你想在程序结束时杀死乌龟,并且只使用 report
没有做到这一点。
您可以按如下方式修复:
to-report check-wall
let result false
hatch 1 [
...
while [not result and ...] [
...
if ... [ set result true ]
]
die
]
report result
end
代码:
to-report check-wall
hatch 1[
set color grey
set size ([size] of one-of walls) / 2
while [distance myself < (2 * ([size] of myself)) and (pycor + ([size] of one-of walls) / 2) < max-pycor ]
[
fd ([size] of one-of walls) / 2
if any? walls in-radius size
[
report true
]
]
die
]
report false
错误:
REPORT must be immediately inside a TO-REPORT. error while inboxturtle 260 running REPORT called by procedure CHECK-WALL
请忽略代码的功能。我没有详细说明,因为我认为不需要。 注意: 我希望当内部 if 为真时停止该方法并 return。因此,创建一个变量并将其设置为真,如果然后在最后 returning 不是一个可能的选择。
这是 NetLogo 语言的一个不幸的限制,即 report
不能在 ask
、hatch
和类似的原语中使用。
但在这种情况下,即使不存在限制,代码仍然是不正确的,因为你想在程序结束时杀死乌龟,并且只使用 report
没有做到这一点。
您可以按如下方式修复:
to-report check-wall
let result false
hatch 1 [
...
while [not result and ...] [
...
if ... [ set result true ]
]
die
]
report result
end