我希望 - NetLogo中的if elseif else
声明。我怎么能有效地这样做?我检查了NetLogo文档没有命令这样做。 Previous similar question没有直接回答,但在上下文中解决了。
一个简单的解决方案是:
let flag true
if(condition1)
[
...
set flag false
]
if(flag and condition2) ;else if statement
[
...
set flag false
]
if(flag) ;else statement
[
...
]
我正在寻找其他更有效率的人。
修改 根据尼古拉斯的建议,在第二个条件中添加了旗帜。
答案 0 :(得分:4)
我能全心全意地推荐的唯一方法是:
ifelse condition1
[ ... ]
[ ifelse condition2
[ ... ]
[ ifelse condition3
[ ... ]
[ ifelse ...
但是,缩进和可读性并不好。有关可能的最终改进的想法,请参阅https://github.com/NetLogo/NetLogo/issues/344和https://github.com/qiemem/ControlFlowExtension。
答案 1 :(得分:-1)
我发现这个形式最具可读性,虽然最后的“]”堆栈有点令人反感
ifelse item cur brain = 0 [sit][
ifelse item cur brain = 1 [eat][
ifelse item cur brain = 2 [steal][
ifelse item cur brain = 3 [birth][
ifelse item cur brain = 4 [hunger][
ifelse item cur brain = 5 [smell][
]]]]]]
它的优点是简洁,阅读就像“C”风格开关声明