ときどき魔法が起こりすぎて、コンパイラが何をしているのかわからなくなってしまうことがあります。たとえば akka では、receive次のように定義されています。
def receive: Receive
type Receive = Actor.Receive
次のようにReceive定義されます。
type Receive = PartialFunction[Any, Unit]
次に、次のように宣言receiveします。
def receive = {
case "a" => //do something
case "b" => //do something
case _ => //default
}
私は知ってPartialFunctionいますが、私が得られないのは、メッセージをどのように適用するかということreceiveです。を返すので、 applyandを提供することを想定していませんか?isDefinedAtreceivePartialFunction
構文的には、メッセージにどのように適用receiveされますか? それは何かのようなことをしmessage match receiveますか?