使用for/yield从序列中删除元素

Gle*_*zza 3 scala

给定一个Future[Seq[Widget]],Widget包含一个amount : Int属性,我想返回一个Seq[Widget]但仅限于那些Widget数量值大于100的s.我相信该for { if … } yield { }构造将给我我想要的但不确定如何过滤序列.我有:

val myWidgetFuture :  Future[Seq[Widget]] = ...

for {
  widgetSeq <- myWidgetFuture
  if (??? amount > 100) <— what to put here?
}  yield {
  widgetSeq
}
Run Code Online (Sandbox Code Playgroud)

如果有一种干净的非收益方式,这对我也有用.

yan*_*ana 6

你甚至不需要yield.使用map.

val myWidgetFuture: Future[Seq[Widget]] = ???

myWidgetFuture map { ws => ws filter (_.amount > 100) }
Run Code Online (Sandbox Code Playgroud)