Scala的列表類有indexWhere
方法,它們返回與提供的謂詞相匹配的List元素的單個索引(如果不存在,則返回-1)。Scala的List類應該有一個indicesWhere方法嗎?
我最近發現自己想要收集所有指數中匹配一個給定的謂詞列表,並發現自己編寫的表達式,如:
list.zipWithIndex.filter({case (elem, _) => p(elem)}).map({case (_, index) => index})
其中p
這裏是選擇匹配的元素一些謂詞函數。對於這樣一個簡單的要求來說,這看起來似乎有些笨拙(但我可能會錯過一兩個技巧)。
我多少希望找到列表中的indicesWhere
功能,這將允許我,而不是寫:
list.indicesWhere(p)
如果這樣的事情是Scala的列表API的一部分,或者是有一個更簡單的表達比我在上面展示的做同樣的事情?
1由於爲有用的答案。但問題仍然存在,如果這個函數真的被包含在Scala集合API的一部分中?儘管有隱含的方法解決方法,但在我看來,對於相當基礎的操作來說,這仍然是一種不直觀的表達方式。 – Henry
@Henry:Scala是開源的,隨時爲問題跟蹤器創建問題,編寫實現和測試,提供更改文檔並在GitHub上提出請求。你還想聽聽什麼?當沒有人從事這項工作時,如果有用的東西通常是無關緊要的。 – sschaef