很抱歉,如果这个问题很奇怪,我仍然会从OOP切换我的编程大脑。
我有一系列开关。我想创建与当前开关相同数量的补丁颜色。
例如在python中,我将使用以下代码来获取值为1
的开关数:
sum(switch_hashmap.values())
所以我的问题源于我解决这个问题的新手方法。通过将开关视为具有内置基本功能的对象。我正在避免写一打if blocks
,因为它闻起来像是糟糕的设计。
netlogo有可能吗?这里的最佳做法是什么?
答案 0 :(得分:3)
假设您在界面选项卡上有切换a
,b
和c
。要获得当前打开的开关数量,您只需执行以下操作:
sum (map [ v -> ifelse-value v [ 1 ] [ 0 ] ] (list a b c))
(list a b c)
部分使用开关的状态来构建布尔值列表,然后我们map
到我们可以求和的1和0列表。除了非面向对象以及你必须明确地将布尔值转换为1或0这一事实之外, 远不是你的Python代码。
尽管如此,我并不认为“将开关视为具有内置基本功能的对象”是正确的概念框架。确实,接口小部件在内部表示为对象,但从NetLogo程序员的角度来看,它们应该被认为是一组碰巧可由用户修改的全局变量。