Разница между is-agent? и is-turtle?

Я считаю, что это должен быть простой вопрос, но я не нашел разницы между примитивами is-agent? и is-turtle?, и когда мне следует использовать один вместо другого.

2
0
181
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Черепашки, патчи и ссылки - все это агенты. Таким образом, is-agent? вернет true для любого из них. Но патчи и ссылки явно не черепахи, поэтому is-turtle? вернет для них 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    

Поэтому, если вы пытаетесь отличить агентов от таких вещей, как числа, строки и истинные / ложные значения, вы должны использовать is-agent?. Если вы действительно хотите иметь дело с черепахами, используйте is-turtle?.

Новая порода тогда будет агентом, а не черепахой ?.

user1993416 31.10.2018 17:04

Обновлен ответ с примером пород - каждая выведенная черепаха также черепаха, поэтому is-turtle? ghoul 1 дает true.

Jasper 31.10.2018 17:27

Другие вопросы по теме