Создание элементов из вложенных списков? - PullRequest
0 голосов
/ 30 января 2020

Я работаю над тем, чтобы моя программа взаимодействовала с всеобъемлющей структурой, которая передает информацию со списками.

У меня есть порода под названием 'people', и я экспортирую информацию о них с помощью

to srti-lists
 ask people [ foreach [self] of people [
  set traits-list (list (who) (color) (heading)(xcor)(ycor)(shape)]]
set master-list [traits-list] of people
end 

Отлично работает для экспорта этой информации. У меня проблемы с созданием или обновлением людей с информацией, которую я затем получаю в виде мастер-списка.

Я подхожу к этому как к проблеме foreach, но проблема в том, что, хотя это позволяет мне выполнять команды для каждого элемента главного списка, я не выяснил, как затем получить доступ к индивидуальному вложенные элементы.

Итак, скажем:

foreach master-list
[create person 
set who item 0 master-list

et c. Проблема в том, что синтаксис создаст человека, а затем установит кто как весь подсписок Пропуск списка приводит к ошибке, а более точный выбор элементов невозможен, поскольку это будет список переменной длины.

Есть идеи, как итеративно выбирать элементы из вложенных списков? Является ли foreach даже правильным подходом?

1 Ответ

2 голосов
/ 31 января 2020

Я не могу это проверить, но мне это кажется неправильным:

to srti-lists
 ask people [ foreach [self] of people [
  set traits-list (list (who) (color) (heading)(xcor)(ycor)(shape)]]
set master-list [traits-list] of people
end 

ask уже проходит через людей, так что похоже, что каждой черепахе присваивается список характеристик для всех черепах, а затем мастер-список представляет собой список этих списков. Возможно, вы захотите:

to srti-lists
 ask people [
  set traits-list (list (who) (color) (heading)(xcor)(ycor)(shape)]
set master-list [traits-list] of people
end 

При настройке черт число who не может быть установлено - оно присваивается автоматически при создании черепахи и никогда не может быть изменено. Например, попробуйте следующую полную (неработающую) модель, и вы получите ошибку:

to testme
  create-turtles 5
  ask one-of turtles [set who 10 ]
end

Так что я не знаю, что вы имеете в виду, когда говорите, что who назначен весь подсписок - who всегда является целым числом и присваивается последовательно.

Относительно вашего поставленного вопроса - ваш синтаксис set who item 0 master-list будет найден, если вы попытаетесь set переменную, которую вы могли бы на самом деле установить.

...