Scala 的 List 类具有indexWhere
方法,这些方法返回与提供的谓词匹配的 List 元素的单个索引(如果不存在,则返回 -1)。
我最近发现自己想收集与给定谓词匹配的 List 中的所有索引,并发现自己编写了如下表达式:
list.zipWithIndex.filter({case (elem, _) => p(elem)}).map({case (_, index) => index})
这里p
是一些用于选择匹配元素的谓词函数。对于这样一个简单的要求,这似乎有点笨拙(但我可能会错过一两个技巧)。
我有一半希望indicesWhere
在 List 上找到一个可以让我改写的函数:
list.indicesWhere(p)
像这样的东西应该是 Scala 的 List API 的一部分,还是有比我上面展示的更简单的表达式来做同样的事情?