C#では、クラスとインターフェイスにevent
次のものを含めることができます。
public class Foo
{
public event Action SomethingHappened;
public void DoSomething()
{
// yes, i'm aware of the potential NRE
this.SomethingHappened();
}
}
これにより、最小限の定型コードでプッシュベースの通知が容易になり、複数のサブスクライバーモデルが有効になるため、多くのオブザーバーがイベントを聞くことができます。
var foo = new Foo();
foo.SomethingHappened += () => Console.WriteLine("Yay!");
foo.DoSomething(); // "Yay!" appears on console.
Scalaに同等のイディオムはありますか?私が探しているのは:
- 最小限の定型コード
- 単一のパブリッシャー、複数のサブスクライバー
- サブスクライバーのアタッチ/デタッチ
Scalaドキュメントでの使用例は素晴らしいでしょう。ScalaでのC#イベントの実装を探していません。むしろ、私はScalaで同等のイディオムを探しています。