Netlogo:如何查看补丁集的坐标
Netlogo: how to see coordinates of patchset
我的海龟有一个内存,用于存储海龟旅行的补丁:
set memory (patch-set memory patch-here)
如何查看其内存的每个补丁的坐标?
您的 memory
是 patch-set,因此您可以 ask
其成员,就像 ask patches
一样。例如:
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
ask memory [
print list pxcor pycor
]
]
end
或者,考虑上面的报告器(即 list pxcor pycor
)只是一个报告器,您可以使用 of
将其应用于任何补丁或补丁组。在那种情况下:
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
print [list pxcor pycor] of memory
]
end
第一个示例将报告单独的列表,对我来说它似乎主要用于打印。第二个例子会报告一个列表的列表,所以它似乎对进一步的操作更有用。
无论如何,我不知道你是否已经考虑过这一点,但请注意,作为 memory
和 patch-set,它的补丁总是以随机顺序出现.如果你想 memory
反映你的乌龟的旅程,那么你必须把它列成一个列表:
turtles-own [
memory
]
to setup
clear-all
create-turtles 1 [
set memory (list)
]
end
to go
ask turtles [
right random 360
move-to patch-ahead 1
set memory (lput patch-here memory)
]
end
考虑到我们现在有补丁列表,您仍然可以实现相同类型的输出。下面的代码使用 foreach
为您提供与上面第一个示例相同的结果(即返回单独列表的代码):
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
foreach memory [
p ->
ask p [
print list pxcor pycor
]
]
]
end
虽然下面的代码使用 map
为您提供与上面第二个示例相同的结果(即返回列表列表的那个):
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
print map [p -> [list pxcor pycor] of p] memory
]
end
当然,除了将结果打印到命令中心之外,您还可以使用 to-report
和 report
将这些 command-procedures 转换为 reporter-procedures;这样结果就可以在代码的其他地方随时可用,以便在需要时进一步使用
无论如何,如果这是您使用 memory
的唯一方式,它会导致您考虑是否可以直接将 memory
作为坐标列表而不是 [=49] =] 您必须从中提取该信息的补丁:
to go
ask turtles [
right random 360
move-to patch-ahead 1
set memory (lput ([list pxcor pycor] of patch-here) memory)
]
end
我的海龟有一个内存,用于存储海龟旅行的补丁:
set memory (patch-set memory patch-here)
如何查看其内存的每个补丁的坐标?
您的 memory
是 patch-set,因此您可以 ask
其成员,就像 ask patches
一样。例如:
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
ask memory [
print list pxcor pycor
]
]
end
或者,考虑上面的报告器(即 list pxcor pycor
)只是一个报告器,您可以使用 of
将其应用于任何补丁或补丁组。在那种情况下:
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
print [list pxcor pycor] of memory
]
end
第一个示例将报告单独的列表,对我来说它似乎主要用于打印。第二个例子会报告一个列表的列表,所以它似乎对进一步的操作更有用。
无论如何,我不知道你是否已经考虑过这一点,但请注意,作为 memory
和 patch-set,它的补丁总是以随机顺序出现.如果你想 memory
反映你的乌龟的旅程,那么你必须把它列成一个列表:
turtles-own [
memory
]
to setup
clear-all
create-turtles 1 [
set memory (list)
]
end
to go
ask turtles [
right random 360
move-to patch-ahead 1
set memory (lput patch-here memory)
]
end
考虑到我们现在有补丁列表,您仍然可以实现相同类型的输出。下面的代码使用 foreach
为您提供与上面第一个示例相同的结果(即返回单独列表的代码):
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
foreach memory [
p ->
ask p [
print list pxcor pycor
]
]
]
end
虽然下面的代码使用 map
为您提供与上面第二个示例相同的结果(即返回列表列表的那个):
to inspect-memory
ask one-of turtles [
print word "This is the memory of " self
print map [p -> [list pxcor pycor] of p] memory
]
end
当然,除了将结果打印到命令中心之外,您还可以使用 to-report
和 report
将这些 command-procedures 转换为 reporter-procedures;这样结果就可以在代码的其他地方随时可用,以便在需要时进一步使用
无论如何,如果这是您使用 memory
的唯一方式,它会导致您考虑是否可以直接将 memory
作为坐标列表而不是 [=49] =] 您必须从中提取该信息的补丁:
to go
ask turtles [
right random 360
move-to patch-ahead 1
set memory (lput ([list pxcor pycor] of patch-here) memory)
]
end