Ich bin ganz neu bei Scala, da ich sehr wenig Erfahrung mit der funktionalen Programmierung durch Haskell hatte.
Ich möchte versuchen, eine Liste aller möglichen Paare zusammenzustellen, die aus einer einzigen Eingabeliste erstellt wurden. Beispiel:
%Vor% Ich habe versucht, zip
für jedes Element mit der ganzen Liste zu verwenden, in der Hoffnung, dass es das eine Element im ganzen Duplizieren würde. Es hat nicht funktioniert (nur das erste mögliche Paar). Ich bin nicht sicher, wie man ein Element wiederholt (Haskell tut es mit cycle
und take
Ich glaube), und ich hatte Schwierigkeiten, der Dokumentation auf Scala zu folgen.
Das lässt mich denken, dass es wahrscheinlich eine prägnantere, funktionellere Art gibt, die gewünschten Ergebnisse zu erzielen. Hat jemand eine gute Lösung?
Hier ist eine andere Version mit map und flatten
val pairs = nums.flatMap(x => nums.map(y => (x,y)))
List[(Int, Int)] = List((1,1), (1,2), (1,3), (1,4), (1,5), (2,1), (2,2), (2,3), (2,4), (2,5), (3,1), (3,2), (3,3), (3,4), (3,5), (4,1), (4,2), (4,3), (4,4), (4,5), (5,1), (5,2) (5,3), (5,4), (5,5))
Dies kann dann leicht in eine composePairs-Funktion eingefügt werden, wenn Sie möchten:
%Vor%Tags und Links scala list functional-programming