Ich habe eine Liste von Tupeln der Form (string, int)
. Ich versuche, die Liste zu durchsuchen und das Tupel zurückzugeben, dessen Zeichenfolgenkomponente mit dem Parameter übereinstimmt, wie in: let find_tuple string_name tuples_list =
Wie kann ich das tun? Ich kann meinen Kopf nicht ganz umschließen. Gibt es eine Möglichkeit, die passende Syntax wie (string, _) ->...
zu verwenden?
Ja, Sie verwenden eine passende Syntax wie diese, benötigen aber Match-Wächter (oder Sie können wenn dann sonst verwenden). Das Modul List
hat eine Funktion namens find
, die das erste Element zurückgibt, das mit einem Vergleichselement übereinstimmt. Es hat auch die Funktion filter
(und find_all
- gleiche Funktion), die eine Liste aller Elemente zurückgibt, die dem Prädikat entsprechen. Zum Beispiel:
EDIT: ein besseres Prädikat:
%Vor% Die bessere Lösung ist jedoch die Verwendung von List.assoc
, die auf Listen von Tupeln basiert und die Tupel als Schlüssel / Wert-Paare betrachtet:
Obwohl der Rückgabewert von List.assoc
das zweite Element des Tupels ist (in Ihrem Fall ein int
). Wenn Sie den Wert des Tupels möchten, erstellen Sie es entweder neu oder verwenden Sie den ersten Ansatz.