Netlogo-访问列表中的修补程序或代理?

Netlogo-访问列表中的修补程序或代理?,netlogo,Netlogo,我有一个补丁列表。我使用列表而不是补丁集,因为元素必须保持有序,以便可以将其用作创建其他列表的引用。我希望创建这些补丁的属性列表,但“of”似乎不适用于列表。 以下是我尝试做的一个简化版本: ;; create list of patches in front of player set map-area (list patch-at -1 1 patch-at 0 1 patch-at 1 1) ;; create list of grass levels in those patches s

我有一个补丁列表。我使用列表而不是补丁集,因为元素必须保持有序,以便可以将其用作创建其他列表的引用。我希望创建这些补丁的属性列表,但“of”似乎不适用于列表。 以下是我尝试做的一个简化版本:

;; create list of patches in front of player
set map-area (list patch-at -1 1 patch-at 0 1 patch-at 1 1)
;; create list of grass levels in those patches
set grass-layer-map (list [grass-amount] of map-area)
;; create list of how many turtles in each patch
set turtle-layer-map (list [count turtles-here] of map-area)
当我使用补丁集而不是列表时,此方法(使用“of”)有效,但现在我得到以下错误:

预期输入的类型为turtle agentset或patch agentset或turtle 或补丁,但获得了列表[(补丁2 4)(补丁3 4)(补丁4)] 相反


我需要找到一种新方法来获取这些补丁属性并创建新列表。非常感谢您的帮助

列表使用与代理集不同的原语进行操作。NetLogo字典有一个特定的列表原语部分。在您的例子中,与的
等价的是
map

这将有助于:

patches-own [grass-amount]

to testme
  clear-all
  ask patches
  [ set grass-amount random 3
    sprout 2
  ]
  let map-area (list patch -1 1 patch 0 1 patch 1 1)
  print map-area
  ;; create list of grass levels in those patches
  let grass-layer-map map [ p -> [grass-amount] of p ] map-area
  print grass-layer-map
  ;; create list of how many turtles in each patch
  let turtle-layer-map map [p -> [count turtles-here] of p ] map-area
  print turtle-layer-map
end
我认为应该有一种更干净的方法来绘制地图,不使用匿名函数来访问补丁的变量,但是我的大脑中有一个空白