2017-04-26 10 views
0

私はデフォルト設定の単純なアクターシステムを持っています。私はクラスの拡張俳優Akka静的使用

class Test extend Actor { 
    def receive: Receive = { 
     case Foo(collection) => sender ! extract(collection) 
    } 

    private def extract(c: List[FooItem]): List[BarItem] = ??? 
} 

この俳優は

object Test { 
    def props: Props = ??? 
} 

コンパニオンオブジェクトを持ってい

は次のように関数extractを行うには、安全があるです:

object Test { 
    def props: Props = ??? 
    def extract(c: List[FooItem]): List[BarItem] = ??? 
} 

と使用他の俳優から?

答えて

1

はい、コンパニオンでメソッドを定義してから、そのメソッドをアクタークラスでインポートして使用しても問題ありません。このようなものはうまくいくでしょう:

object Test { 
    def props: Props = Props[Test] 
    def extract(c: List[FooItem]): List[BarItem] = { 
    . . . 
    } 
} 

class Test extend Actor { 
    import Test._ 
    def receive: Receive = { 
    case Foo(collection) => sender ! extract(collection) 
    } 
} 
+0

ありがとう!私はマルチスレッドについて心配しました。この場合特定の俳優がいますか? – HoTicE

+0

表示されている例(アクターに依存しない純粋な関数)は、このように使用すると問題ありません。たとえば、 'ActorContext'を' extract'関数に渡したなら、これをしないでください。 – Ryan

+0

ありがとう、ライアン!今はかなり明確です。 – HoTicE

関連する問題