首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将PartialFunction与另一个函数组合并返回PartialFunction?

如何将PartialFunction与另一个函数组合并返回PartialFunction?
EN

Stack Overflow用户
提问于 2016-08-23 23:20:25
回答 1查看 52关注 0票数 0

我有以下类:

代码语言:javascript
复制
class MessageProcessorActor(private val destination : ActorRef) extends Actor{
  override def receive: Receive = {
    case _ =>
    destination ! {
      case MyActor.TracableMessage(msg) => MyActor.TracableMessage("Processed + " + msg)
      case MyActor.Message(msg) => MyActor.Message("Processed + " + msg)
      case _ => "Processed + " + _
    }(_)
  }
}

object MyActor{
  case class TracableMessage(private val msg: String) extends Message(msg)
  case class Message(private val msg: String)
}

其中Recieve定义为

代码语言:javascript
复制
type Receive = PartialFunction[Any, Unit]

在这里,我试图避免声明持有PartialFunction[Any, Any]val,而是这样调用它。但是编译器拒绝了这个代码。它打印:

代码语言:javascript
复制
Error:(12, 6) ';' expected but '(' found.
    }(_)
     ^

有没有做这样的事情的捷径?

EN

回答 1

Stack Overflow用户

发布于 2016-08-24 01:29:52

你为什么要试着这样写呢?关注有什么问题吗?

代码语言:javascript
复制
class MessageProcessorActor(private val destination : ActorRef) extends Actor{
  override def receive: Receive = {
    case MyActor.TracableMessage(msg) => {
      destination ! MyActor.TracableMessage("Processed + " + msg)
    }
    case MyActor.Message(msg) => {
      destination ! MyActor.Message("Processed + " + msg)
    }
    case _ => { 
      destination ! "Processed + " + _
    }
  }
}

object MyActor{
  case class TracableMessage(private val msg: String) extends Message(msg)
  case class Message(private val msg: String)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39105068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档