c# - Scala 中 C# 事件的惯用等价物是什么

标签 c# scala

在 C# 中,类和接口(interface)可以有事件:

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 中是否有等效的习语?我正在寻找的是:

  1. 最少的样板代码
  2. 单个发布者,多个订阅者
  3. 附加/分离订阅者

它在 Scala 文档中的使用示例会很棒。我不是在 Scala 中寻找 C# 事件的实现。相反,我在 Scala 中寻找等效的习语

最佳答案

scala 的惯用方式是不使用观察者模式。 参见 Deprecating the Observer Pattern .

看看this answer实现。

关于c# - Scala 中 C# 事件的惯用等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14503306/

相关文章:

c# - Win32 异常 : "Access is denied" when trying to execute LINQ query over Process. GetProcesses()

scala - akka-remote 可序列化警告

java - 在 Maven 中可以使用哪些选项来模拟 "sbt run"?

Scala 编译器在使用泛型的方法中显示 "No TypeTag available for T"

c# - 在 Parallel.ForEach 中嵌套 await

c# - 在 C# 中压缩文件

c# - Selenium XPath 无法识别表格单元格中的文本

java - Java/Scala 中的 CAS 和 SAML 2.0 实现

scala - 2 种可能状态下的参数类型 T

c# - 使用 C# 中的 Gdal 库将 shapefile 转换为 kml