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

Ale*_*lex 6 scala traits partialfunction actor akka

我在这里使用Akka actor库.actors库定义了一个部分函数"receive",扩展"actor"的actor必须实现处理各种消息.我正在为我的应用程序创建一个特征层次结构,其中trait"clockActor"扩展了Actor,"MasterClock"和"SubClock"扩展了"clockActor".我想在"时钟"特性的接收功能中添加时钟的通用功能,但是如何在主时钟和副时钟特性中为接收功能添加额外的功能?

简而言之,我需要一种方法来向部分函数添加额外的case语句.想法?

pag*_*_5b 14

如前所述,您可以轻松地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 ... =>  ...
    }

}
Run Code Online (Sandbox Code Playgroud)