Scala split string tuple
Ich würde gerne split einen string auf Leerzeichen, die hat 4 Elemente:
1 1 4.57 0.83
und ich bin versucht zu konvertieren in Liste[(String,String,Point)] so, die ersten zwei Spalten sind die ersten beiden Elemente in der Liste) und die letzten beiden Punkt ist. Mache ich die folgenden, aber es scheint nicht zu funktionieren:
Source.fromFile(filename).getLines.map(string => {
val split = string.split(" ")
(split(0), split(1), split(2))
}).map{t => List(t._1, t._2, t._3)}.toIterator
- Wenn Sie möchten, dass ein Tupel warum sagen Sie, die Sie konvertieren möchten, um eine Liste?
- Ich Stimme zu, das sollte wahrscheinlich den Titel näher zu konvertieren string-Liste() der Elemente
InformationsquelleAutor princess of persia | 2013-02-20
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man mithilfe der Mustererkennung wird ein zu extrahieren, was Sie brauchen, aus der Reihe:
collect
"Baut eine neue Sammlung durch die Anwendung einer partiellen Funktion auf alle Elemente dieser Liste, auf der die Funktion definiert ist.". Es ist genau wiemap
lässt aber nur die Elemente in der Domäne der partiellen FunktionWie wäre es damit:
Sind Sie nicht die Umwandlung der Dritten und vierten Token in eine
Point
, noch sind Sie die Umwandlung der Linien in eineList
. Auch Sie sind nicht gerendert wird jedes element als einTuple3
, aber alsList
.Sollten die folgenden sein mehr im Einklang mit, was Sie suchen.
Und für die neugierigen, die @ in den pattern-matching-bindet eine variable an das Muster, so
points @ _*
ist die Bindung der variable Punkte, um das Muster *_ Und *_ Spiele den rest des Arrays, also Punkte, die endet als eine Seq[String].Gibt es Möglichkeiten zum konvertieren eines Tupels Liste oder Seq, Ein Weg,
Aber wie Sie sehen können, dass der Rückgabetyp ist Alle und NICHT ein INTEGER
Für die Umwandlung in verschiedene Typen, die Sie verwenden Hlist von
https://github.com/milessabin/shapeless