Finde einen Gegenstand in der Liste der Tupel

8

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?

    
yavoh 17.12.2010, 17:28
quelle

2 Antworten

7

Sie können dies wie folgt erreichen

%Vor%

oder einfach

%Vor%     
0xFF 17.12.2010, 17:40
quelle
1

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:

%Vor%

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:

%Vor%

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.

    
Niki Yoshiuchi 17.12.2010 17:40
quelle

Tags und Links