Ich bin neu in Scala und versuchen, die beste Art und Weise, um herauszufinden, zu filtern & eine Sammlung Karte. Hier ist ein Spielzeugbeispiel, um mein Problem zu erklären.Scala: Der beste Weg zu filtern & Karte in einer Iteration
Ansatz 1: Das ist ziemlich schlecht, da ich zweimal durch die Liste iteriere und den gleichen Wert in jeder Iteration berechne.
val N = 5
val nums = 0 until 10
val sqNumsLargerThanN = nums filter { x: Int => (x * x) > N } map { x: Int => (x * x).toString }
Ansatz 2: Dies ist etwas besser, aber ich muss noch (x * x)
zweimal berechnen.
Also, ist es möglich, dies zu berechnen, ohne zweimal durch die Sammlung zu iterieren und die gleichen Berechnungen zu vermeiden?
Warum hat jemand folgt Down-Abstimmung diese Antwort? 'collect' scheint wie eine sehr idiomatische Art, dies zu tun. –
Ist das nicht genau mein "Approach 2"? –
Ja, es ist das gleiche wie Ansatz 2 oben, und nach der Definition von _collect_ zu gehen, erscheint mir dies vollkommen vernünftig; es sagt genau was es tut. Dies soll nicht heißen, dass andere oben erläuterte Ansätze besser oder schlechter sind. – Nirmalya