О полях Scala и событиях изменения свойств - PullRequest
3 голосов
/ 10 февраля 2011

В качестве продолжения этого вопроса о том, что Scala @BeanProperty генерирует события изменения: что нужно для полной реализации поведения, которое генерирует аннотирование поля var некоторой настраиваемой аннотацией (например, @Property)код, необходимый для запуска событий изменения свойства?Единственный способ сделать это - написать плагин компилятора, верно?

В более общем смысле: существует ли стандартный способ (как в Java) для обработки аннотаций в компиляторе в Scala?

1 Ответ

2 голосов
/ 11 февраля 2011

Может быть возможно сделать это с прокси, как в Java, возможно, с использованием cglib или чего-то подобного.Плагин компилятора также может сделать это (как вы правильно сказали), но он может быть немного излишним, если вы пишете что-то меньшее, чем библиотека общего назначения!

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


Для немного другого подхода к проблеме,Нафтоли Гугенхем имеет «реактивную» библиотеку на GitHub для помощи в функциональном реактивном программировании, возможно, лучшую парадигму, чем управляемая событиями модель наблюдаемых свойств.

Класс ObservableBuffer - хорошее место, чтобы начать искать.

...