Netlogo 为什么在IF语句中使用map会出现问题?
为什么下面的程序不运行Netlogo 为什么在IF语句中使用map会出现问题?,netlogo,Netlogo,为什么下面的程序不运行 if (map [ [a b c] -> a + b = c ] [1] [2] [3]) [show 100] 以下内容生成“true”作为输出: show (map [ [a b c] -> a + b = c ] [1] [2] [3]) 因此,我希望上面的第一句话与以下内容相同: if true [show 100] (注意:在我的完整版本中,列表较长,但使用reduce将其折叠为一个true/false。) 谢谢。为了详细说明ThomasC的评
if (map [ [a b c] -> a + b = c ] [1] [2] [3]) [show 100]
以下内容生成“true”作为输出:
show (map [ [a b c] -> a + b = c ] [1] [2] [3])
因此,我希望上面的第一句话与以下内容相同:
if true [show 100]
(注意:在我的完整版本中,列表较长,但使用reduce将其折叠为一个true/false。)
谢谢。为了详细说明ThomasC的评论,map总是生成一个列表,即使它只有一个元素。所以
(map [ [a b c] -> a + b = c ] [1] [2] [3])
是否产生[true]
。因此
(map [ [a b c] -> a + b = c ] [1 2] [2 3] [3 5])
将生成[true]
<代码>减少在这里很有用
reduce AND (map [ [a b c] -> a + b = c ] [1 2] [2 3] [3 5])
将通过“anding”地图输出的所有元素生成一个简单的true
,并且
reduce AND (map [ [a b c] -> a + b = c ] [1 2] [2 3] [3 6])
将生成一个简单的
false
看起来map的输出被放入一个列表中,因此以下操作有效:if(map[[a b c]->a+b=c][1][2][3])=[true][show 100]