当我在指令中心输入(map [?1 + ?2] [1 2 3] [2 4 6])
时,它工作正常。但是当我输入这个代码NetLogo映射问题
to test
(map [?1 + ?2] [1 2 3] [2 4 6])
end
我得到诊断:“预期的命令”。突出显示map
。我很难过。建议将不胜感激。谢谢。
(我使用的NetLogo 5.1.0。)
当我在指令中心输入(map [?1 + ?2] [1 2 3] [2 4 6])
时,它工作正常。但是当我输入这个代码NetLogo映射问题
to test
(map [?1 + ?2] [1 2 3] [2 4 6])
end
我得到诊断:“预期的命令”。突出显示map
。我很难过。建议将不胜感激。谢谢。
(我使用的NetLogo 5.1.0。)
的问题是,map
不被认为是命令(如诊断说)。当我将map
替换为foreach
(并将函数放在最后)时,它很好。
事实上,这正是我真正想要的。我使用map
是因为它在多个列表中运行而不是返回列表的副作用。我的错。
为了方便用户,命令中心允许您设置命令的“上下文”,并根据该上下文做一些额外的解释。问题不在于记者失败,而是报告了一个列表,并且您需要一条命令说明如何处理该列表。
在命令中心输入(map [?1 + ?2] [1 2 3] [2 4 6])
后,不仅要看结果,还要看实际执行的代码(正好在结果上方)。如果您将该代码放入您的test
程序中,它将起作用。
通过“做了一些额外的解释:”你只是意味着“预规划'show'向记者表述”? –
非常。但是,例如,如果将命令中心上下文设置为“turtles”,则在命令行中输入reporter'rpt'将被解释为“ask turtles [show rpt]'。 – Alan
您的代码不起作用,因为您正在生成带有地图的新列表,但未将该列表分配给任何变量。你是正确的,地图是不是原始的命令,这是记者原始的,所以它会返回一个值,你必须把这个值的地方,像打印在屏幕上:
to test
print (map [?1 + ?2] [1 2 3] [2 4 6])
end
或将其存储在变量:
to test
let a-variable (map [?1 + ?2] [1 2 3] [2 4 6])
print a-variable
end
你应该为编辑添加到您的问题,而不是作为一个答案 – user299791