每个嵌套列表的 Netlogo
Netlogo foreach nested list
我正在尝试将较旧的代码移植到最新的 (6.0.1),以下 foreach 循环在 Netlogo 4.1.3 上运行良好,但是当将代码复制并粘贴到版本 6.0.1 时 "item 0 ?" 不起作用。它说“?”未定义。该行代码假设检索段内列表的项目
to setup-row [row colour segments]
foreach segments
[
if pycor = row * row-patches-width and
(pxcor >= col-patches-width * (item 0 ?)) and (pxcor <= col-patches-
width * (item 1 ?))
[set pcolor colour
output-print item 0 ?]
]
end
传入的"segments"变量包含以下列表:
setup-row 4 blue [[-8 -5] [-3 -1] [0 3] [5 9]]
如果代码工作正常,它应该用(项目 0 ?)检索 -8,用(项目 1 ?)检索 -5 等等。我在旧代码中假设的是“?”是从段中检索到的第一个列表是 [-8 -5] 并且(项目 0?)检索了 -8 并且(项目 1?)检索了 -5。
我试图通读新的用户手册以找到类似的东西,但无济于事,或者我没有找对地方。希望你们中的一些人能给我指出正确的方向。
是的,在 Netlogo 6.0 中已更改 - 请参阅 transition guide page. For more detail on the new foreach
syntax, see the dictionary entry。基本上,您现在不使用 ?
,而是显式定义要在 foreach
过程中使用的变量名称。按照上面的列表示例:
to foreach-example
let ex [ [-8 -5] [-3 -1] [0 3] [5 9] ]
foreach ex [
[ xy_coords ] ->
ask patches with [ pxcor = (item 0 xy_coords) and pycor = ( item 1 xy_coords) ] [
set pcolor white
]
]
end
在这里,我明确声明列表项将在整个过程中被调用 "xy_coords"。这是一个不错的更改,允许更易读的代码,因为您的变量可以具有更有意义的名称。
我正在尝试将较旧的代码移植到最新的 (6.0.1),以下 foreach 循环在 Netlogo 4.1.3 上运行良好,但是当将代码复制并粘贴到版本 6.0.1 时 "item 0 ?" 不起作用。它说“?”未定义。该行代码假设检索段内列表的项目
to setup-row [row colour segments]
foreach segments
[
if pycor = row * row-patches-width and
(pxcor >= col-patches-width * (item 0 ?)) and (pxcor <= col-patches-
width * (item 1 ?))
[set pcolor colour
output-print item 0 ?]
]
end
传入的"segments"变量包含以下列表:
setup-row 4 blue [[-8 -5] [-3 -1] [0 3] [5 9]]
如果代码工作正常,它应该用(项目 0 ?)检索 -8,用(项目 1 ?)检索 -5 等等。我在旧代码中假设的是“?”是从段中检索到的第一个列表是 [-8 -5] 并且(项目 0?)检索了 -8 并且(项目 1?)检索了 -5。
我试图通读新的用户手册以找到类似的东西,但无济于事,或者我没有找对地方。希望你们中的一些人能给我指出正确的方向。
是的,在 Netlogo 6.0 中已更改 - 请参阅 transition guide page. For more detail on the new foreach
syntax, see the dictionary entry。基本上,您现在不使用 ?
,而是显式定义要在 foreach
过程中使用的变量名称。按照上面的列表示例:
to foreach-example
let ex [ [-8 -5] [-3 -1] [0 3] [5 9] ]
foreach ex [
[ xy_coords ] ->
ask patches with [ pxcor = (item 0 xy_coords) and pycor = ( item 1 xy_coords) ] [
set pcolor white
]
]
end
在这里,我明确声明列表项将在整个过程中被调用 "xy_coords"。这是一个不错的更改,允许更易读的代码,因为您的变量可以具有更有意义的名称。