Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 为什么在IF语句中使用map会出现问题?_Netlogo - Fatal编程技术网

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]