2016-04-03 22 views
1

Aşağıdaki Scala kodunu optimize etmenin herhangi bir yolu olup olmadığını merak ediyorum çünkü çok verimli görünmüyor. Temel olarak, Tweet olmayan herhangi bir nesneyi akıştan kaldırmak ve Any yerine Tweet ile eşlemek istiyorum.Scala Akka Streams Birleştirme Filtresi Ve Harita

val tweetsFlow = Flow[Any].filter({ 
    case _: Tweet => true 
    case _ => false 
}).map({ 
    case tweet: Tweet => tweet 
}) 

cevap

6

Sen collect yöntemi kullanıyor olabilir bu

val tws = Vector(
    "foo", 
    Tweet(Author("foo"), tms, "foo #akka bar"), 
    1000L, 
    Tweet(Author("bar"), tms, "foo #spray bar"), 
    Tweet(Author("baz"), tms, "foo bar"), 
    1 
) 

val tflow = Flow[Any].collect { 
    case x: Tweet => x 
} 
Source(tws).via(tflow) 
gibi bazı