Habe ich eine Liste von Tupeln der form (string, int)
. Ich versuche, die Suche durch die Liste und die Rückgabe der Tupel, deren string-Komponente entspricht der parameter, wie in: let find_tuple string_name tuples_list =
Wie kann ich dies tun? Ich kann nicht ganz wickeln Sie meinen Kopf herum. Gibt es eine Möglichkeit zur Nutzung von matching-syntax, wie (string, _) ->...
?
Können Sie erreichen dies wie folgt
oder einfach
as
Schlüsselwort, um die Dinge zu vereinfachen ein wenig:| ((s, i) as h)::tl -> if ... then h else ...
Auch, wusste nicht, über diefst
Funktion, danke für den Hinweis it out!List.find (fun (string, _) -> string = string_name) tuples_list
, die die(string, _)
den OP wollte.let rec
es funktionierte perfekt.Ja, Sie tun, verwenden Sie passende syntax so aus, aber müssen übereinstimmen Wachen (oder, die Sie verwenden können, wenn, dann, sonst). Die
List
- Modul hat eine Funktion namensfind
wird das erste element entspricht einem Prädikat. Es hat auch die Funktionfilter
(undfind_all
- gleiche Funktion), gibt eine Liste aller Elemente, die mit dem Prädikat. Zum Beispiel:EDIT: ein besseres Prädikat:
Doch die bessere Lösung ist die Verwendung
List.assoc
die Werke, die auf Listen von Tupeln, und ist der Auffassung, die Tupel von Schlüssel-Wert-Paare:Obwohl der return-Wert
List.assoc
ist das zweite element des Tupels (einint
in Ihrem Fall). Wenn Sie möchten, dass der Wert der Tupel, die entweder neu erstellen, oder verwenden Sie den ersten Ansatz.