W języku C# klas i interfejsów może mieć event
s:Co znajduje się idiomatyczne równowartość w Scala dla C# 's imprez
public class Foo
{
public event Action SomethingHappened;
public void DoSomething()
{
// yes, i'm aware of the potential NRE
this.SomethingHappened();
}
}
Ułatwia to zgłoszenie z minimalnym kodu boilerplate push oparte i umożliwia model wielu abonentów tak że wielu obserwatorów może wysłuchać zdarzenia:
var foo = new Foo();
foo.SomethingHappened +=() => Console.WriteLine("Yay!");
foo.DoSomething(); // "Yay!" appears on console.
Czy w Scali występuje odpowiednik idiomu? Co szukam jest:
- Minimal boilerplate kod
- pojedyncze wydawcy, wielu abonentów
- dołączeniu/odłączeniu abonentów
przykłady jej zastosowania w dokumentacji Scala byłoby wspaniałe. Nie szukam realizacji zdarzeń C# w Scali. Zamiast tego szukam odpowiednika idiomu w Scali.
ten może być pomocny: http://stackoverflow.com/questions/6814246/in-scala-how-would-i-combine-event-driven-programming-with-a-functional-approac – daryal