NetLogo:如何在过程中传递并修改agent-set?添加海龟失效问题
问题原因与解决方法
为什么操作没生效?
NetLogo的过程参数采用按值传递机制:你传给join-turtles的specific-set只是原集合的一个副本,过程内部执行set a-set修改的仅仅是这个局部副本,完全不会影响外部的原agent-set变量。所以执行完后原集合自然还是空的。
解决方法
方法一:让过程返回修改后的集合
把原过程改成报告过程,返回新的agent-set,外部通过set接收更新:
to-report join-turtles [a-set] report turtle-set a-set self end
调用方式修改为:
ask some-turtle [ set specific-set join-turtles specific-set ]
方法二:直接在调用处修改(更简洁)
如果只是简单的添加操作,其实可以省去单独的过程,直接在调用时完成集合更新:
ask some-turtle [ set specific-set turtle-set specific-set self ]
内容的提问来源于stack exchange,提问作者Jonh Smith
相关产品推荐
相关产品推荐

