Scala 如何在匹配模式中获取case类的匹配实例
请看下面的代码:Scala 如何在匹配模式中获取case类的匹配实例,scala,match,case-class,Scala,Match,Case Class,请看下面的代码: def receive: Receive = { case Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => { receiver ! msg val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry) conte
def receive: Receive = {
case Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => {
receiver ! msg
val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry)
context.become(runtime(Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause), cancelHandle))
}
case _ =>
}
您可以看到,在调用context.been
时,我必须完全复制case classBegin
的值,即传递其全部参数。这是可行的,但在我看来,这是代码的重复。有没有办法以某种方式获取匹配的值并将其传递出去?如下所示:
def receive: Receive = {
case fullMsg @ Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => {
receiver ! msg
val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry)
context.become(runtime(fullMsg, cancelHandle))
}
case _ =>
}
就像这样:
def receive: Receive = {
case fullMsg @ Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => {
receiver ! msg
val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry)
context.become(runtime(fullMsg, cancelHandle))
}
case _ =>
}