报告内部循环错误

时间:2015-01-08 09:00:08

标签: netlogo

代码:

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必须立即在TO-REPORT中。 inboxturtle时出错   260运行REPORT由程序CHECK-WALL

调用

请忽略代码的功能。我没有详细说明,因为我不认为这是必需的。 注意:我希望当内部if为true时,它会停止方法并返回。因此,创建一个变量并将其设置为true,如果然后在最后返回则不是一个可能的选项。

1 个答案:

答案 0 :(得分:1)

这是NetLogo语言的一个令人遗憾的限制,report无法在askhatch和类似原语中使用。

但是在这种情况下,即使没有限制,代码仍然是不对的,因为你想要在离开程序的路上杀死乌龟,只使用{{ 1}}没有做到这一点。

您可以按照以下方式修复:

report