Как выбрать патчи из набора агентов без черепашек?

Итак, это код, который я считаю оправданным:

let movable-patches ( [ neighbors ] of selected-turtle with [not (any? other turtles-here)])

Я хочу получить agentset из patches рядом с selected-turtle (который является объектом turtle), и у этих соседей не должно быть turtles-here.

Но это дает мне ошибку времени выполнения:

WITH expected input to be an agentset but got NOBODY instead.

person Kishore S Shenoy    schedule 06.06.2020    source источник


Ответы (1)


Это проблема брекетинга. Вот полная модель, которая демонстрирует фиксированный код.

to testme
  clear-all
  create-turtles 10
  [ setxy random-xcor random-ycor
    set color blue
  ]
  selection
end

to selection
  let selected-turtle one-of turtles
  ask selected-turtle [set color red]
  let movable-patches ([ neighbors ] of selected-turtle) with [not (any? other turtles-here)]
  ask movable-patches [ set pcolor red ]
end

У меня такие скобки: ([ neighbors ] of selected-turtle). Они окружают [ neighbors ] of selected-turtle with [not (any? other turtles-here)]. Проблема в том, что with является оператором с высоким приоритетом и идет первым (например, умножение выполняется перед сложением). Таким образом, вы фактически просите NetLogo найти selected-turtle with [not (any? other turtles-here)], а затем взять neighbors этого.

person JenB    schedule 07.06.2020
comment
Ах я вижу! Где я могу получить такие подробности, как приоритеты, возвращаемые типы и все такое? NetLogo Docs содержит только словарь и руководство по программированию. - person Kishore S Shenoy; 07.06.2020
comment
Словарь — это синтаксис для всех примитивов. Приоритет находится в Руководстве по программированию. - person JenB; 07.06.2020