clojure Filterkarte nach Schlüsseln

8

Ich folge diesem Beispiel: Ссылка

(siehe die letzte Antwort)

Und das ist der kryptische Fehler, den ich bekomme:

%Vor%

Auch ich verstehe nicht, warum das überhaupt funktionieren würde. Wird nicht (einige ...) jedes Mal der erste übereinstimmende Wert "x" zurückgegeben? Ich bin ein totaler Neuling in Clojure und versuche nur zu lernen.

Bitte erleuchte mich.

    
Kevin 26.08.2011, 16:01
quelle

3 Antworten

8

Wenn Sie über eine Karte "iterieren", erhalten Sie Schlüssel-Wert-Paare statt Schlüssel. Zum Beispiel,

%Vor%

Ihre anonyme Funktion versucht also (some [:a "x"] [:a :b]) auszuwerten, was eindeutig nicht funktioniert.

Die ideale Lösung besteht darin, select-keys wie in einer anderen Antwort erwähnt zu verwenden.

    
Joe Lehmann 27.08.2011, 09:11
quelle
27

Ich glaube, ich musste nur die Dokumente mehr lesen:

%Vor%

Obwohl ich immer noch nicht sicher bin, was die Absicht mit dem Beispiel war, das ich gefunden habe ...

    
Kevin 26.08.2011 16:20
quelle
1
%Vor%

Würde dasselbe tun mit filter und some (aber hässlicher und langsamer).

Dies funktioniert, indem alle von m gefiltert werden, wenn einige [:a :b] in der Menge #{(key x)} sind (d. h. eine Menge als Prädikat verwenden) und dann den Map-Eintrag zurückgibt.

    
isakkarlsson 26.08.2011 17:53
quelle

Tags und Links