2016-06-23 1 views
-4

Я довольно новыми для Скале и придумать следующую конструкцию:Что означает <- означает в scala с yeild?

val value= 
    for { 
    p1 <- getList() 
    p2 <- parser.parse(p1) //parser.parse(String) Returns some useful value 
    } yield p2 
value.asJava 

Где

def getList(): List[String] = { 
    //compiled code 
} 

Я не совсем понимаю, что происходит в первой части кода. Поиск scala left arrow operator не пролил свет на это. Вы не можете это объяснить?

+0

См. Http://docs.scala-lang.org/tutorials/FAQ/yield.html –

+2

Наверное, я действительно не понимаю, почему кто-то начнет изучать scala и не будет иметь (онлайн или электронную книгу, дерево). Каждый из них объяснил бы «за ... доходность». –

ответ

1
for { 
    p1 <- getList() 
    p2 <- parser.parse(p1) 
    } yield p2 

эквивалентно (psudocode, не тестировался):

var result: List = Nil 
val value = { 
    foreach(p1 in getList()){ 
    foreach(p2 in parser.parse(p1)){ 
     result ::: p2 
    } 
    } 
    result 
    } 

Но как другие говорили, вы могли бы легко найти, прочитав на for понимания в Scala.

+1

Это много psuedocode для чего-то, что по сути является просто getList(). FlatMap (parser.parse) '. –

+1

Я знаю @Peter. Я пытался продемонстрировать это способом OO. –