`is-agent?` 和 `is-turtle?` 之间的区别

Difference between `is-agent?` and `is-turtle?`

我相信这一定是一个简单的问题,但我还没有发现 is-agent?is-turtle? 基元之间的区别,以及何时应该使用一个而不是另一个。

海龟、补丁、链接都是代理。所以 is-agent? 将 return true 用于其中任何一个。但是补丁和链接显然不是海龟,所以 is-turtle? 将 return false 用于那些。

breed [ ghouls ghoul ]

to test
  clear-all
  create-turtles 1
  create-ghouls 1
  ask turtle 0 [ create-link-to turtle 1 ]

  show is-agent? turtle 0   ; true
  show is-agent? ghoul 1    ; true
  show is-agent? patch 0 0  ; true
  show is-agent? link 0 1   ; true

  show is-turtle? turtle 0  ; true
  show is-turtle? ghoul 1   ; true
  show is-turtle? patch 0 0 ; false
  show is-turtle? link 0 1  ; false

  show is-ghoul? turtle 0   ; false
  show is-ghoul? turtle 1   ; true
end    

因此,如果您试图将代理与数字、字符串和 true/false 值之类的东西区分开来,您可以使用 is-agent?。当你确实想要处理海龟时,使用 is-turtle?