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.
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.
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.
Tags und Links clojure