我是Scala新手。我对以下示例感到困惑。
class AClass extends Actor{
def receive = {
case B => println("Let's do B")
case C => println("Let's do C")
}
}
trait Request
case object B extends Request
case object C extends Request
object Customer{
def main(args: Array[String]) : Unit = {
val system = ActorSystem("Iwanttoeat")
val cook: ActorRef = system.actorOf(Props[CookSomething])
cook ! B
cook ! C
}
}
我有三个问题。
'receive'方法没有输入参数。我能从中得到什么?我想这是来自'厨师! B”。 !意味着发送和忘记。 我很困惑,因为没有使用该方法明确提到的输入参数,但我将B或C与之进行比较?
我看到了模式匹配示例。他们有'匹配'关键字。 在大括号之前省略了'匹配'吗?
3. [不是很重要]为什么'接收'没有支架?我想知道为什么它不像recieve()= {...}我需要你的教学!
干杯
晟
答案 0 :(得分:3)
PartialFunction[Any, Unit]
的部分函数,如Akka Documentation中所述。在Scala中,可以使用省略输入变量的特殊语法定义部分函数,并直接进行模式匹配。有关详细信息,请参阅Effective Scala。