scala - 在Scala中扩展部分实现的局部函数

标签 scala akka actor traits partialfunction

我在这里使用Akka Actor 库。 actors库定义了部分功能“receive”,扩展“actor”的actor必须实现该功能以处理各种消息。我正在为我的应用程序创建一个特征层次结构,其中特征“clockActor”扩展了Actor,“MasterClock”和“SubClock”扩展了“clockActor”。我正在寻找将时钟的常用功能添加到“时钟”特征的接收功能中,但是然后如何在主时钟特征和子时钟特征中向接收功能添加额外的功能呢?

简而言之,我需要一种将额外的case语句添加到部分函数的方法。
有想法吗?

最佳答案

正如已经建议的那样,您可以使用PartialFunctions轻松编写orElse

trait ClockActor {

    def commonOp = {
        case ... => ...
    }

}

class MasterClock extends Actor with ClockActor {

    def receive = commonOp orElse masterOp

    def masterOp = {
        case ... =>  ...
    }

}

class SubClock extends Actor with ClockActor {

    def receive = commonOp orElse subOp

    def subOp = {
        case ... =>  ...
    }

}

关于scala - 在Scala中扩展部分实现的局部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237405/

相关文章:

java - AKKA - 如何对处理 TCP 连接的 actor 进行单元测试?

java - 在一个集群中只运行一次 akka scheduler

Akka 2.6 如何在 Akka Typed 中读取 `Dead Letters`?

multithreading - 在 akka scala Actor 中使用单例

json - 斯卡拉 : How to do GroupBy sum for String values?

scala - 在 Scala 中返回多个值的函数

scala - 何时对递归函数/方法使用辅助递归函数/方法

scala - Akka 在 Actor 之外进行日志记录

.net-core - Orleans - 如何提高提醒的准确性

Scala构造函数重载参数不生效