可惜的是,Netlogo缺少C风格的++。您使用什么解决方法?
Let x x+1
很好,但是当它变成
Set Goat-drinking-holes Goats-drinking-holes + 1
我渴望C + +,-=%=等运算符。
您想出什么解决方案?
las,set Goat-drinking-holes Goats-drinking-holes + 1
是唯一的方法。但是,对于许多常见的增量用例,有一种更好的处理方法。例如,可以使用foreach
和遍历列表map
。如果您指定要通过增量实现的目标,人们可能会帮助您找到更简洁,更具表现力的东西。
编辑以回应评论:
为了完整起见,如果您确实需要,可以执行以下操作,但是我不建议这样做。set
NetLogo中显式s的要求是有意的。NetLogo(以及其他徽标)从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
。如果可以的话,我真的建议您避免这种情况。
如果您发现自己需要大量增加或使用其他类似的破坏性运算符,则可能有更好的方法来做您想做的事情。我知道SO上有很多人很乐意提供帮助。NetLogo有很多C族语言所没有的东西(当然还有整个ABM东西),而经验丰富的程序员通常甚至都不知道要寻找什么。NetLogo缺少这些运算符是有原因的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句