代理人死亡如何肯定会影响代理人 运行 的 `while` 循环?

How does agent death surely affect the `while` loop that the agent is running?

正如下面的测试所示,如果一只海龟在死亡时是 运行 和 while,那么它会跳出 while(没有任何错误)。 NetLogo 保证这种行为吗?

to test
  ca
  let age 0
  crt 1
  ask turtle 0 [
    while [true] [    
      set age (1 + age)
      print (word "age is " age)
      if (random-float 1 < 0.1) [die] ;death ends the while
    ]
  ]
end

是的——每当乌龟执行“死”时,它会立即停止执行任何命令。在您的例子中,while 循环(和“询问 turtle 0”)被终止。海龟也会自动从所有代理集中删除。

如果您使用“[die show “I'm dead!”]”而不是“[die]”,代码将永远不会显示“I'm dead!”因为它一执行“die”就停止了。

(如果你曾尝试用另一种编程语言编写一个移除代理的模型,你应该领会到 NetLogo 的“die”原语是多么神奇。在其他语言中,做同样的事情可能是一场复杂的噩梦。)