如何获取刚刚创建的新龟的id号?

时间:2017-07-08 16:17:34

标签: 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
          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   

在乌龟环境中运行(步行者繁殖) 助行器正在通过“链接”(另一个调用此程序的程序)移动,当计数器<0时, 此代码生成一个新事件(事件品种)并将其放在walker所在的同一位置(cur-link是当前的walker链接)。 之后,助行器必须获取新事件的ID号

set events-x ([who] of events-here)

这里的问题是变量events-x获得一个空列表[]。下一次步行者经过相同的事件时,它会得到事件的数字ID。

有些东西一定是错的,但我猜不出它是什么。 如果有人能看一眼并给我一些帮助,我将非常感激。

此致

1 个答案:

答案 0 :(得分:2)

你可以:

let child-who -1
hatch-events 1 [
  ...
  set child-who who
  ...
]
set events-x child-who

或者:

hatch-events 1 [
  ...
  let child-who who
  ask myself [ set events-x my-who ]
  ...
]

遗憾的是,这些都有点笨拙。第二个避免需要将child-who初始化为无意义的值,但它需要使用myself,这可能会使读者神秘化。

你可以避免这两个问题:

let parent self
hatch-events 1 [
  ...
  let child-who who
  ask parent [ set events-x child-who ]
  ...
]

(但请注意,对于任何问题,使用谁的数字,对于任何问题来说,很少是最好和最惯用的解决方案。存储对龟本身的引用几乎总是更好。)