2014-09-11 34 views
3

我對Scala很新穎。akka類接收定義在哪裏?

在演員類之一,我有看到我的我的同事這樣定義

進口akka.actor.Actor

class Processor extends Actor { 

    def receive: Receive = { 
    case msg: String => doProcess(msg) 
    case _ => 
    } 
} 

這哪裏是班上定義的代碼?它不會導入到這個類中。系統將如何找到接收類別

+0

你爲什麼不接受的答案... – 2014-09-12 08:37:51

回答

6

它是一個類型別名一個類型別名PartialFunction[Any, Unit]分別在akka.actor.Actor伴侶對象和特質中定義。

摘自source code

object Actor { 
    // Type alias representing a Receive-expression for Akka Actors. 
    type Receive = PartialFunction[Any, Unit] 
    // ... 
} 

trait Actor { 
    // to make type Receive known in subclasses without import 
    type Receive = Actor.Receive 
    // ... 
} 
1

ReceivePartialFunction[Any,Unit]的類型別名。該類型別名在Actor隨播對象上定義,隨後將在Actor特徵(因此在Actor impls中可用)上重新定義,該特徵指的是伴隨對象上定義的特徵。

1

收穫是PartialFunction [任意,單位]

見演員源代碼here

你也可以寫接收方法

def receive: PartialFunction[Any, Unit] = { 
    …. 
}