没有输入的 NetLogo 6 匿名程序

NetLogo 6 anonymous procedures with no inputs

在编程指南中提到匿名过程可以没有输入:

[[] -> fd 1]
[[] -> count turtles]

我的问题是这样的程序有什么用?

如果您 models 文件夹中的 运行 grep -rl "\[\] ->",您将在 NetLogo 模型库中看到一些示例,即:

Code Examples/Extensions Examples/nw/NW General Examples.nlogo
Code Examples/State Machine Example.nlogo
3D/Sample Models/Termites 3D.nlogo3d
Sample Models/Biology/BeeSmart Hive Finding.nlogo
Sample Models/Chemistry & Physics/Sandpile.nlogo
Sample Models/Social Science/Hotelling's Law.nlogo
IABM Textbook/chapter 8/Sandpile Simple.nlogo

我鼓励您看一下它们,但常见的用途是存储您希望乌龟稍后执行的任务。

如果您使用 状态机示例 ,您会看到白蚁有一个 next-task 变量,该变量根据白蚁应该执行的操作设置为不同的匿名过程接下来要做例如,当一只白蚁偶然发现一堆筹码时,它的下一个任务就是放下手中的筹码:

to find-new-pile  ;; turtle procedure -- look for yellow patches
  if pcolor = yellow
    [ set next-task [ [] -> put-down-chip ] ]
end

您并不总是需要这种技术,但它是对某些类型的系统(例如状态机)进行建模的强大工具。