Sagen wir, ich habe eine Liste:Suchen und Ersetzen Artikel in Scala Sammlung
val list = List(1,2,3,4,5)
Ich möchte alle/erste Elemente ersetzen, die ein Prädikat erfüllen, ich kenne die folgende Art und Weise, es zu tun: (zB ersetzen Sie Zahl, die sogar mit -1)
val filteredList = list.zipWithIndex.filter(_._2 % 2 == 0)
val onlyFirst = list.updated(filteredList.head._2, -1)
val all = for(i <- list) yield if(i % 2 ==0) -1 else i
gibt es eine Sammelfunktion oder nette Scala Art und Weise ist, dass in dieser Situation hilft und hat eine gute Leistung ?
Ich mag auch die Ordnung halten, so will ich nicht filterNot
verwenden und andere Elemente zur Liste hinzufügen: (es ist auch nicht effizient)
val onlyFirst = list.filterNot(_ % 2 != 0) ::: list.filter(_ % 2 == 0).map(x => -1)
Wie wäre es 'Karte'? – JimN
@JimN Karte hat ein Problem für nur die erste – Omid