我正在尝试验证项目序列的未来。我的validate方法还返回布尔值的未来。我能够使其正常运行,但是我不确定我自己在这里发生了什么。
因此,我有一个有效的代码,一个无效的代码。有人知道这里发生了什么吗? 另外,如何通过在地图后链接过滤器以使其全部集中在一处而不必以后再使用分配来使其工作呢?
def main(args: Array[String]): Unit = {
println(Await.result(testMethod(),Duration.Inf))
}
def validationmethod(n: Int) = {
Future { n % 2 == 0 }
}
有效的代码:
def testMethod() = {
for {
seqOfIntegers <- Future { List(1,2,3,4,5,6,7,8,9,10) }
numberToBooleanTupleSeq <- Future.sequence(seqOfIntegers.map {
number =>
validationmethod(number)
.map(validtedBooleanTuple => (number,validtedBooleanTuple))
})
finalIntegerSeq = numberToBooleanTupleSeq.filter(_._2).map(_._1)
} yield {
finalIntegerSeq
}
无效的代码:
def testMethod() = {
for {
seqOfIntegers <- Future { List(1,10) }
finalIntegerSeq <- Future.sequence(seqOfIntegers.map {
number =>
validationmethod(number)
.map(validtedBooleanTuple => (number,validtedBooleanTuple))
.filter(_._2)
.map(_._1)
})
} yield {
finalIntegerSeq
}
}