我发现自己经常使用这种模式:
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 => {}
}
答案 0 :(得分:4)
听起来你想要find
和foreach
(你似乎正在应用副作用功能):
list.find(_.property == value).foreach { foo =>
...
}