【发布时间】:2012-03-22 07:56:01
【问题描述】:
我正在尝试在 scala 集合中搜索列表中与某个谓词匹配的项目。我不一定需要返回值,只是测试列表是否包含它。
在 Java 中,我可能会这样做:
for ( Object item : collection ) {
if ( condition1(item) && condition2(item) ) {
return true;
}
}
return false;
在 Groovy 中,我可以执行以下操作:
return collection.find { condition1(it) && condition2(it) } != null
在 Scala 中执行此操作的惯用方式是什么?我当然可以将 Java 循环样式转换为 Scala,但我觉得有一种更实用的方法可以做到这一点。
【问题讨论】:
-
我不会太担心惯用性或功能性:Scala 库中的集合具有
exists和find方法(区别在于find返回元素)返回为一旦找到元素。两者都是用var和while循环实现的,看起来与你的java 实现非常相似(除了将谓词作为参数)。
标签: scala collections idioms