Netlogo 如何获取刚创建的新海龟的id号?
我有下面的代码,我孵化了一个新的特工Netlogo 如何获取刚创建的新海龟的id号?,netlogo,Netlogo,我有下面的代码,我孵化了一个新的特工 to t-of-slowdown [ es-poi ] if we-look > 0 [ set we-look (we-look - 1) if (we-look <= 0) [ if es-poi and (not any? events-here) [ hatch-events 1 [ set color green set size 5
to t-of-slowdown [ es-poi ]
if we-look > 0 [
set we-look (we-look - 1)
if (we-look <= 0) [
if es-poi and (not any? events-here) [
hatch-events 1 [
set color green
set size 5
set is-poi? true
set new-poi true
let m [[ end2 ] of cur-link] of myself
move-to m ]
set events-x ([who] of events-here)
show events-x
set we-poi-var va-geometric (1 / 1500) + we-ticks poi
set sera-poi false
]
set impregna true
set color red
set seguir true
set we-look random-normal 120 20 ;time to watch an event
]
]
end
这里的问题是变量events-x
得到一个空列表[]
。下一次步行者经过同一事件时,它会获得该事件的编号id
一定是出了什么事,但我猜不出是什么事。
如果有人能看一看并给我一些帮助,我将不胜感激
关于您可以:
let child-who -1
hatch-events 1 [
...
set child-who who
...
]
set events-x child-who
或:
遗憾的是,这两个都有点笨重。第二种方法避免了将子对象
初始化为无意义的值,但它需要使用我自己
,这是一种可能会让读者感到困惑的原语
您可以避免以下两个问题:
let parent self
hatch-events 1 [
...
let child-who who
ask parent [ set events-x child-who ]
...
]
(但请注意,无论如何,使用世卫组织的数字很少是解决任何问题的最佳和最惯用的方法。存储对海龟本身的引用几乎总是更好的。)在设置事件-x之前,您必须
移动到([谁…
-在walker有机会检查其补丁上的任何事件之前,您的新事件海龟似乎已经移动到了m
。您是对的,最好不要使用代理的id,但我不知道表中的键是否(扩展名)可能是海龟。另一方面,变量event-x
属于walker繁殖代理,而不是刚刚孵化的事件。那么,我可以在hatch events 1[…]中设置events-x
括号?。我已经修改了我的答案。非常感谢。我不想使用who数字,但我不知道如何将海龟单独用作表中的键。我一直在寻找解决方案,例如将海龟集转换为列表,并在foreach
构造中使用它,但我想知道是否还有另一个ap我已经发布了一个关于这件事的新问题。
hatch-events 1 [
...
let child-who who
ask myself [ set events-x my-who ]
...
]
let parent self
hatch-events 1 [
...
let child-who who
ask parent [ set events-x child-who ]
...
]