增量的最佳方法是什么?

时间:2014-10-30 01:08:43

标签: netlogo

Netlogo遗憾地错过了一个c风格的++。你使用了什么工作?

Let x x+1

很好但是当它变成

Set Goat-drinking-holes Goats-drinking-holes + 1

我渴望C运算符,比如+ =, - =%= etc。

您提出了哪些解决方案?

1 个答案:

答案 0 :(得分:2)

唉,set Goat-drinking-holes Goats-drinking-holes + 1是唯一的方法。但是,对于许多增量的常见用例,有一种更好的方法。例如,可以使用foreachmap遍历列表。如果您通过递增来指定您尝试完成的任务,那么人们可能会帮助您找到更简洁和富有表现力的内容。

编辑以回应评论:

为了完整起见,如果真的想要,你可以这样做,但我不推荐它。 NetLogo中明确set的要求是有意的。 NetLogo(以及其他Logos)从Lisp和其他功能语言中汲取了很多灵感。无论如何,这里是:

to increment [ var-name ]
  run (word "set " var-name " " var-name " " + 1")
end

然后你就这样使用它:increment "Goat-drinking-holes"。这将创建字符串"set Goat-drinking-holes Goat-drinking-holes + 1",然后像代码一样运行它。在我看来非常难看,如果在紧密循环中使用它会很慢。请注意,这不会对局部变量起作用,因为它们不在increment的范围内。如果可以,我真的建议避免这种情况。

如果你发现自己需要增加或使用其他类似的破坏性操作员,那么可能有更好的方法去做你想做的事情。我知道很多人都很乐意提供帮助。 NetLogo有很多东西,C系列语言没有(当然除了整个ABM的东西)经验丰富的程序员通常都不知道要找。 NetLogo缺少那些运营商是有原因的。