NetLogo地图问题

时间:2014-12-29 11:54:04

标签: netlogo

当我将(map [?1 + ?2] [1 2 3] [2 4 6])输入指挥中心时,它可以正常工作。但是当我输入这段代码时

to test
  (map [?1 + ?2] [1 2 3] [2 4 6])
end

我得到诊断:“预期的命令。”突出显示map。我很难过。建议将不胜感激。感谢。

(我正在使用NetLogo 5.1.0。)

3 个答案:

答案 0 :(得分:2)

问题是map不被视为命令(正如诊断所说)。当我用map替换foreach(并将函数放在最后)时没关系。

事实上,这就是我真正想要的东西。我使用map来表示运行多个列表而不是返回列表的副作用。我的错误。

答案 1 :(得分:2)

为方便用户,命令中心允许您设置命令的“上下文”,并根据该上下文进行一些额外的解释。问题不在于map报告者失败了,而是报告了一个列表,并且您需要一个命令来说明如何处理该列表。

在命令中心输入(map [?1 + ?2] [1 2 3] [2 4 6])后,不仅要查看结果,还要查看实际执行的代码(位于结果正上方)。如果您将该代码放在test程序中,它将起作用。

答案 2 :(得分:1)

您的代码不起作用,因为您正在生成带有地图的新列表,但您没有将该列表分配给任何变量。你是对的,map不是一个命令原语,它是一个报告原语,所以它返回一个值,你必须将该值放在某处,比如在屏幕上打印它:

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