2014-12-29 158 views
2

当我在指令中心输入(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。)

回答

2

的问题是,map不被认为是命令(如诊断说)。当我将map替换为foreach(并将函数放在最后)时,它很好。

事实上,这正是我真正想要的。我使用map是因为它在多个列表中运行而不是返回列表的副作用。我的错。

+0

你应该为编辑添加到您的问题,而不是作为一个答案 – user299791

2

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

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

+1

通过“做了一些额外的解释:”你只是意味着“预规划'show'向记者表述”? –

+0

非常。但是,例如,如果将命令中心上下文设置为“turtles”,则在命令行中输入reporter'rpt'将被解释为“ask turtles [show rpt]'。 – Alan

1

您的代码不起作用,因为您正在生成带有地图的新列表,但未将该列表分配给任何变量。你是正确的,地图是不是原始的命令,这是记者原始的,所以它会返回一个值,你必须把这个值的地方,像打印在屏幕上:

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