使 agentset 超出列表

Making agentset outof list

这与刚才问的上一个问题有关。

如何将列表(代表海龟)转换为代理集?

例如,我想制作

包含4个元素的agentset [turtle 0 turtle 3 turtle 4 turtle 7]

不在列表中 ["turtle 0" "turtle 3" "turtle 4" "turtle 7"]

我以前试过"foreach"。

先谢谢了~!!

您是否出于某种原因限制使用字符串列表?如果没有,但您仍然想要一个列表,我建议您首先构建包含代理的列表。如果您稍后将其写入文件,无论如何它都会被转换为字符串。在内部直接与代理合作要容易得多。

根据号码列表制作代理列表:

globals [ turtle-list num-list]

to setup 
  ca
  reset-ticks

  crt 3   

  set num-list [ 0 1 2 ]
  set turtle-list map [ i -> turtle i ] num-list 
  print turtle-list      
end

请注意,如果列表中包含 who 个不存在的海龟的编号,您将在列表中得到一个 nobody

别管这些,照@NicolasPayette 说的去做。

然后您*可以*使用 `foreach` 轻松地为您的 `turtle-list` 构建代理集: foreach 海龟列表 [ 吨 -> 设置 turtle-agentset (turtle-set turtle-agentset t ) ] 但是,如果您的最终目标是代理集并且不需要列表,则可以跳过一个步骤,直接构建代理集: 建立 加州 重置滴答声 阴极射线管 3 设置数字列表 [ 0 1 2 ] 设置 turtle-agentset 没有人 foreach 数字列表 [ n -> 设置 turtle-agentset (turtle-set turtle-agentset turtle n ) ] 打印 turtle-agentset 结尾

我不确定你为什么需要使用像

这样的列表
["turtle 0" "turtle 3" "turtle 4" "turtle 7"]

首先。将对代理的引用存储为对代理的直接引用以外的任何内容通常不是一个好主意。

也就是说,您可以将这样的字符串转换为代理集:

turtle-set map runresult ["turtle 0" "turtle 3" "turtle 4" "turtle 7"]

如果这些海龟中的任何一个都不存在,它们将被排除在生成的代理集中之外。

不过,整件事让我觉得有些不明智。如果您告诉我们更多关于您想要完成的事情,也许我们可以建议一个更好的方法。