在 if() 中重现 java 逻辑控制

reproduce java logic control in if()

将此 Java 代码转换为 Netlogo 的最有效方法是什么:

boolean cont = true;
for (int i = 0; cont && i < 10; i++) {
  if (condition) {
    // do stuff
      cont = false;
  }
}

我已经尝试过类似的方法:

let cont true
while [cont][
  foreach a-list [
    if (condition)[
      ;; do stuff
      set cont false
    ]
  ]
]

但效率不高,因为 foreach 可能会结束而 while 条件不会

您可以使用 stop 来中断程序。但是要小心:stop 退出整个过程,而不仅仅是循环。这可以通过在它自己的过程中包含相关代码来处理:

to loop-through-list
  foreach a-list [
    if condition? [ stop ]
    ; do stuff...
  ]
  print "Be careful: this line won't execute!"
end

一些一般性建议:NetLogo 有自己的做事方式,与 Java 截然不同。特别是,我建议避免在 NetLogo 代码中使用索引和 while 循环。它们通常可以用 foreach or map 代替,从而产生更健壮和可维护的代码。