Идиоматический движок событий в Scala - PullRequest
6 голосов
/ 12 октября 2011

У меня проблема с тем, что некоторые объекты меняют свои свойства в зависимости от внутренней логики. Для простоты, давайте представим объект RandomSource с открытым Int полем с именем Value. У объекта есть собственный поток, и иногда он обновляет поле Value.

Теперь другие объекты в системе заинтересованы в получении уведомления об обновлении Value. В C # я мог бы определить сопутствующий делегат, на который подписываются объекты и который он вызывает при обновлении свойства.

Мой вопрос, таким образом, следующий: как мне это сделать в Scala? Какое решение является самым «идиоматическим»?

1 Ответ

1 голос
/ 13 октября 2011

Наблюдатели все еще довольно стандартны, также известны как издатель / слушатель. Вы можете свернуть свое собственное, или вы могли бы использовать какое-то решение на основе акторов, если вам нужны асинхронные уведомления.

С функциональной стороны это чаще делается через функциональные реактивные рамки. Есть Reactive Нафтоли, но Akka также предоставляет Dataflow, что составляет очень много базовых понятий.

Помимо этого, это область исследований эволюции Scala, поэтому вы можете быть уверены, что увидите больше из них.

...