F # Iteration über ein Dictionary

8

Ich beginne gerade mit F # und ich möchte über ein Wörterbuch iterieren und die Schlüssel und Werte erhalten.

Also in C # würde ich sagen:

%Vor%

Ich kann anscheinend keinen Weg finden, dies in F # zu tun (nicht eines, das sowieso kompiliert).

Könnte jemand bitte den entsprechenden Code in F # vorschlagen?

Prost,

Crush

    
Crush 16.07.2010, 17:55
quelle

2 Antworten

18

Was ist der Typ Ihres Wörterbuchs?

Wenn es nicht generisch ist IDictionary , wie Ihr Code-Snippet suggeriert, dann versuchen Sie Folgendes (In F # fügt for implizit keine Conversions ein, daher müssen Sie Seq.cast<> hinzufügen, um eine typisierte Auflistung zu erhalten mit denen du leicht arbeiten kannst):

%Vor%

Wenn Sie das generische IDictionary<'K, 'V> verwenden, brauchen Sie den Aufruf von Seq.cast nicht (wenn Sie Kontrolle über die Bibliothek haben, ist dies besser als die vorherige Option):

%Vor%

Wenn Sie unveränderlichen F # Map<'K, 'V> type verwenden (was der beste Typ ist, wenn Sie Funktionscode in F # schreiben), können Sie die Lösung von Pavel verwenden oder for loop zusammen mit verwenden das KeyValue aktive Muster wie folgt:

%Vor%

In beiden Fällen können Sie entweder for oder verschiedene iter -Funktionen verwenden. Wenn Sie etwas mit Nebenwirkungen ausführen müssen, dann würde ich for loop bevorzugen (und dies ist nicht die erste Antwort, wo ich dies erwähne :-)), weil dies ein Sprachkonstrukt für diesen Zweck ist. Für die funktionale Verarbeitung können Sie verschiedene Funktionen wie Seq.filter etc .. verwenden.

    
Tomas Petricek 16.07.2010 18:11
quelle
2
%Vor%     
Pavel Minaev 16.07.2010 18:00
quelle

Tags und Links