Можно ли создать группу коммутаторов в Netlogo? - PullRequest
0 голосов
/ 30 мая 2018

Извините, если этот вопрос странный, я все еще переключаю свой мозг программирования с ООП.

Проблема

У меня есть набор переключателей.И я хочу создать такое же количество цветов патчей, как и у включенных в данный момент переключателей.

Как я могу это решить

Например, в Python я использовал бы следующий код, чтобы получить числопереключается со значением 1:

sum(switch_hashmap.values())

Вопрос

Так что мой вопрос проистекает из моего неофитического подхода к решению этой проблемы.Думая о переключателях как об объекте, в котором есть элементарные функции.Я избегаю писать дюжину if blocks, так как это пахнет плохим дизайном.

Возможно ли это в netlogo?Какова лучшая практика здесь?

1 Ответ

0 голосов
/ 30 мая 2018

Предположим, у вас есть переключатели a, b и c на вкладке интерфейса.Чтобы узнать количество включенных в данный момент переключателей, вы можете просто сделать:

sum (map [ v -> ifelse-value v [ 1 ] [ 0 ] ] (list a b c))

Часть (list a b c) использует состояние ваших переключателей для построения списка логических значений, которые мы затем mapсписок единиц и нулей, которые мы можем суммировать.За исключением не-объектно-ориентированной и того факта, что вам нужно явно преобразовывать логические значения в 1 или 0, это не , что далеко от вашего кода Python.

Тем не менее, я неПолагать, что «думать о переключателях как об объекте, который имеет встроенные элементарные функции», является правильной концептуальной основой.Это правда, что виджеты интерфейса внутренне представлены как объекты, но с точки зрения программиста NetLogo их следует рассматривать как набор глобальных переменных, которые могут быть изменены пользователем.

...