首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在嵌套的ifelse语句中实现这一点

如何在嵌套的ifelse语句中实现这一点
EN

Stack Overflow用户
提问于 2019-01-17 21:05:54
回答 1查看 67关注 0票数 1

我目前正在做一个项目,它需要以下内容:我希望端口(一个品种)询问存储位置(另一个品种)它们是否有一定的价值。如果不是,则继续询问下一个存储位置等,直到他找到具有正确值那个位置。如果是这样,那么它应该采取另一个行动(比如构建一些东西)。我现在得到了这个,这似乎是工作,但它是超级长和过于复杂,我认为。

代码语言:javascript
复制
to check-pipeline-26
  ask storage 26
  [ifelse pipeline < 1
    [build-pipeline]
    [check-pipeline-27]
  ]
end

to check-pipeline-27
  ask storage 27
  [ifelse pipeline < 1
    [build-pipeline]
    [check-pipeline-28]
  ]
end

to check-pipeline-28
  ask storage 28
  [ifelse pipeline < 1
    [build-pipeline]
    [check-pipeline-29]
  ]
end

to check-pipeline-29
  ask storage 29
  [ifelse pipeline < 1
    [build-pipeline]
    [check-pipeline-30]
  ]
end

如果你有任何技巧可以让这件事变得更简单或简单,请告诉我。提前感谢!

最大值

EN

Stack Overflow用户

回答已采纳

发布于 2019-01-18 01:42:56

下面是一个递归解决方案,其中我将管道编号作为参数进行传递:

代码语言:javascript
复制
to check-pipeline [n]
    if n <= max [who] of storages
    ask storage n [ifelse pipeline < 1 
     [build-pipeline]
     [check-pipeline n + 1]
]
end

注意:您可能会在一个变量中跟踪max-who,而不是每次都进行计算。

或者,这可能是一个更好的解决方案,您可以只使用for循环,并根据谁对代理进行排序,以使它们按顺序进行:

代码语言:javascript
复制
 to check-pipeline
     foreach sort-on  [who] storages
      [astorage -> ask astorage[ if pipeline < 1 [build-pipeline stop]]]
    ]
 end
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54236625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档