Scala の List クラスにはindexWhere
メソッドがあり、指定された述語 (存在しない場合は -1) に一致する List 要素の単一のインデックスを返します。
私は最近、特定の述語に一致するリスト内のすべてのインデックスを収集したいと考えており、次のような式を書いていることに気付きました。
list.zipWithIndex.filter({case (elem, _) => p(elem)}).map({case (_, index) => index})
ここp
に、一致する要素を選択するための述語関数があります。これは、このような単純な要件に対しては扱いにくい表現のように思えます (ただし、1 つまたは 2 つのトリックが欠けている可能性があります)。
indicesWhere
私は代わりに書くことを可能にする List 上の関数を見つけることを半分期待していました:
list.indicesWhere(p)
このようなものを Scala の List API の一部にする必要がありますか?それとも、同じことを行う上で示したものよりもはるかに単純な式がありますか?