惯用scala collectFirst方法?

时间:2014-09-25 20:30:04

标签: scala

我发现自己经常使用这种模式:

myBigList.collectFirst { case foo if (foo.property == value) => foo } match {
  case Some(foo) => { 
    // do stuff with foo 
  }
  case None => {}
}

是否有更简洁的方法将单个条件应用于列表中的每个项目,然后抢夺第一个结果?我没有挖掘匹配语法,但似乎我应该可以做这样的事情(它读起来像scala的collect(f=>Boolean).headOption的包装版本给我

myBigList.collectFirst { x => x.property == value } match {
  case Some(foo) => { 
    // do stuff with foo 
  }
  case None => {}
}

1 个答案:

答案 0 :(得分:4)

听起来你想要findforeach(你似乎正在应用副作用功能):

list.find(_.property == value).foreach { foo =>
    ...
}