我想在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
感谢
答案 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