Взаимодействие с событиями и слушателями в MATLAB - PullRequest
1 голос
/ 23 февраля 2011

Я хочу написать код GUI, который будет ортогональным.Допустим, у меня есть класс круга и класс квадрата, и они должны взаимодействовать.Прямо сейчас, чтобы окружение и квадрат говорили друг с другом - скажем, объект круга отправляет сообщение квадратному объекту, я бы использовал что-то вроде square_obj.listen_for_circle(circle_obj), где listen_for_circle - это метод, который реализует аддистансер.

Это проблема для меня, так как теперь два объекта связаны - и удаление одного объекта из моего кода сломало бы его.Я хочу, чтобы circle_obj мог транслировать глобальное сообщение, скажем 'CIRCLE_EVENT'.Кроме того, square_obj будет прослушивать глобальные широковещательные сообщения типа 'CIRCLE_EVENT', а после прослушивания события - выполняет какое-то действие (Ааа, теперь у объектов нет ссылок друг на друга в кодовой базе!)

Isэто возможно или даже разумно в MATLAB?(или, может быть, я просто схожу с ума).Как всегда, совет очень ценится.

1 Ответ

3 голосов
/ 23 февраля 2011

Я не совсем уверен, почему addlistener проблематично для вас.По сути, он просто добавляет прослушиватель событий, который ничего не делает, если объект источника события (круг) удален.

В качестве альтернативы вы можете использовать event.listener или handle.listener .Они недокументированы, но работают хорошо и широко используются в базе кода Matlab (m-файлы).Смотрите объяснение здесь: http://UndocumentedMatlab.com/blog/continuous-slider-callback/#Event_Listener

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...