如何在没有参数的scala中创建receive {}块

时间:2014-03-06 11:23:47

标签: scala functional-programming

我想在scala中使用以下代码:

class MyClass {
    receive {
      case DoThis => println("dothis")
      case DoThat => println("dothat")
    }
}

现在我明白接收应该是部分功能,但无论我创建哪个部分功能它都不起作用。我应该为receive创建哪个部分函数,​​noarg代码可以正常工作。

或者换句话说,我应该将哪个代码块添加到MyClass中,以便我可以用

调用它
new MyClass().receive(DoThis) // which code to add to MyClass so that can call receive like this

感谢

1 个答案:

答案 0 :(得分:2)

如果你想创建一个PartialFunction,你必须指定它的类型:

sealed trait DoParent
case object DoThis extends DoParent
case object DoThat extends DoParent

{
  case DoThis => println("dothis")
  case DoThat => println("dothat")
}: PartialFunction[DoParent, Unit]

现在您可以将此部分函数(PartialFunction[DoParent, Unit]的实例)分配给变量或字段,如下所示:

val receive: PartialFunction[DoParent, Unit] = {
  case DoThis => println("dothis")
  case DoThat => println("dothat")
}

receive(DoThis)
// dothis