创建一个期货清单

时间:2013-02-28 20:18:20

标签: scala concurrency

我正在尝试使用输入参数以下列方式创建一个期货列表

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 => 

我需要对我的函数做什么才能编译?

2 个答案:

答案 0 :(得分:3)

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

foreach不返回内容。 map返回内容。它们都是在可迭代集合上定义的方法。

yield关键字与for构造(称为 for comprehension )一起使用,如下所示

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

(由pagoda_5b编辑,被拒绝但我认为值得)

答案 1 :(得分:1)

这个怎么样:

def main( args:Array[String] ){
  val threads = for(arg <- args ) yield future{1 + 1} 
}