Ich bin neu zu Scala, hatte sehr begrenzte Erfahrung mit funktionalen Programmierung durch Haskell.Erstellen einer Liste aller Paare
Ich möchte versuchen, eine Liste aller möglichen Paare zusammenzustellen, die aus einer einzigen Eingabeliste aufgebaut sind. Beispiel:
val nums = List[Int](1, 2, 3, 4, 5) // Create an input list
val pairs = composePairs(nums) // Function I'd like to create
// pairs == List[Int, Int]((1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1) ... etc)
Ich versuchte zip
für jedes Element mit der ganzen Liste mit, in der Hoffnung, dass es den einen Punkt über die gesamte würde dupliziert. Es hat nicht funktioniert (nur das erste mögliche Paar). Ich bin nicht sicher, wie man ein Element wiederholt (Haskell macht es mit cycle
und take
, glaube ich), und ich hatte Schwierigkeiten, der Dokumentation auf Scala zu folgen.
Das lässt mich denken, dass es wahrscheinlich eine prägnantere, funktionellere Möglichkeit gibt, die gewünschten Ergebnisse zu erzielen. Hat jemand eine gute Lösung?
Es ist sehr hilfreich, um die Terminologie für den Betrieb Sie ausführen wollen zu lernen. In diesem Fall versuchen Sie, das Produkt der Liste mit sich selbst zu finden. Schau dir das an: http://stackoverflow.com/questions/8217764/cartesian-product-of-tow-lists – Marcin
@Marcin Danke. Ich habe einen der größten Stolpersteine gefunden, um einen Grad an funktionaler Programmierung zu lernen, ist die neue Terminologie. – KChaloux
Kreuzprodukt? Wie kartesisches Produkt? Wenn Spark hier relevant ist, dann ist [diese Antwort] (http://stackoverflow.com/a/26565173/1175496) ebenfalls relevant –