2013-02-28 3 views
0

Я пытаюсь создать список фьючерсов, используя входные аргументы следующим образомСоздание списка фьючерсов

def main(args:Array[String]){ 
    val threads = args foreach yield future { 
     // Do stuff here 
    } 
} 

, но каждый раз, когда я пытаюсь запустить его, я получаю следующую ошибку

error: ';' expected but 'yield' found. 
val threads = args foreach yield future { str => 

Что мне нужно сделать для выполнения моей функции, чтобы она скомпилировалась?

ответ

3
def main(args:Array[String]){ 
    val threads = args map future { 
     // Do stuff here 
    } 
} 

foreach не возвращает материал. map возвращает материал. Оба эти метода определены на итеративных коллекциях.

yield ключевое слово вместо используется с for конструкции (так называемый для понимания), как показано ниже

for (arg <- args) yield future {...whatever} 
//in general: for(generator) yield (result for each generated element) 

(редактировать по pagoda_5b, который был отвергнут, но я чувствую, что это стоит)

1

Как об этом:

def main(args:Array[String]){ 
    val threads = for(arg <- args) yield future{1 + 1} 
} 
Смежные вопросы