2016-04-11 2 views
0

と定義を受け取り、そして私が拡張したかった実装を、受信作業を持っていますが、もう一つは動作していない: まず、作業実装:Scalaの俳優は、私はスプレーサーバを使用していますスプレー

def receive = runRoutes(routes) 

を第二版:

def receive = { 
    case GetRoutes => sender() ! getRoute ~ deleteRoute ~ postRoute ~ patchRoute 
    case x => runRoute(getRoute ~ deleteRoute ~ postRoute ~ patchRoute) 
} 

runRouteはタイプActor.Receiveです。その代わりの

val run = runRoute(getRoute) // takes a number of implicit params to construct the route 
def receive = { 
    case x => run(x) 
} 

しかし、私はActor.Receive機能を構成することをお勧めしたい:あなたが実際にあなたが第二の例ではそうであるように、あなたがそれを書く場合コール runRouteする必要が

おかげ

答えて

2

このパターンを使用して:

val special: Actor.Receive = { case GetRoutes => sender() ! getRoute ! ... } 
def receive: Actor.Receive = special orElse runRoute(getRoute ~ ...) 

PartialFunctionをfこのブログのポストには、例:http://daily-scala.blogspot.com/2010/02/chaining-partial-functions-with-orelse.html

+0

非常に役立ち、明確で情報提供しています。完璧に動作します。どうもありがとう – mani

関連する問題