Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/vb6/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 增量的最佳方式是什么?_Netlogo - Fatal编程技术网

Netlogo 增量的最佳方式是什么?

Netlogo 增量的最佳方式是什么?,netlogo,Netlogo,令人遗憾的是,Netlogo缺少一个c风格的++。你使用什么工作环境 Let x x+1 很好,但当它变得 Set Goat-drinking-holes Goats-drinking-holes + 1 我渴望C操作符,比如+=,-=%=等等 您想出了什么解决方案?唉,设置山羊饮水孔山羊饮水孔+1是唯一的方法。然而,对于许多常见的递增用例,有一种更好的方法。例如,可以使用和遍历列表。如果你指定了你试图通过递增来完成什么,人们可能会帮助你找到更简洁、更富有表现力的东西 根据评论进行编辑: 为

令人遗憾的是,Netlogo缺少一个c风格的++。你使用什么工作环境

Let x x+1
很好,但当它变得

Set Goat-drinking-holes Goats-drinking-holes + 1
我渴望C操作符,比如+=,-=%=等等


您想出了什么解决方案?

唉,
设置山羊饮水孔山羊饮水孔+1
是唯一的方法。然而,对于许多常见的递增用例,有一种更好的方法。例如,可以使用和遍历列表。如果你指定了你试图通过递增来完成什么,人们可能会帮助你找到更简洁、更富有表现力的东西

根据评论进行编辑:

为了完整性,如果你真的想做的话,你可以这样做,但我不推荐这样做。NetLogo中明确的
set
s要求是有意的。NetLogo(以及其他徽标)从Lisp和其他函数式语言中获得了很多灵感。不管怎么说,它是这样的:

to increment [ var-name ]
  run (word "set " var-name " " var-name " " + 1")
end
然后像这样使用:
增加“山羊饮水孔”
。这将创建字符串
“设置山羊饮水孔山羊饮水孔+1”
,然后像代码一样运行它。在我看来,它相当难看,如果用在紧密的循环中,速度会很慢。请注意,这对局部变量不起作用,因为它们不在
increment
的范围内。如果可以的话,我真的建议你避免这样做


如果你发现自己需要大量增加或使用其他类似的破坏性操作符,那么可能有更好的方法来完成你想做的事情。我知道现场有很多人,他们很乐意帮忙。NetLogo有很多C族语言所不具备的东西(当然,除了整个ABM的东西),而经验丰富的程序员甚至不知道如何寻找这些东西。NetLogo缺少这些运营商是有原因的。

不知道NetLogo;但是,难道不可能使一个函数调用相同的
set
?类似于
增量
(或
增量
,如果追求简洁)?我搜索了通过引用传递的参数,找到了关于@Bryan Head的一些信息。谢谢你让我的渴望得到了缓解。Netlogo是最好的。别忘了重复一遍。