Ich lerne Clojure, und ich habe diesen Codecode online gesehen:
%Vor% Und es, wie gesagt, zählen Vorkommen der Zahl 42 in coll. Ist #{42}
eine Funktion? Die Clojure-Dokumentation auf dem Filter sagt, dass es sein sollte, da das Snippet wie angekündigt funktioniert. Ich habe nur keine Ahnung, wie es funktioniert. Wenn jemand das für mich klären könnte, wäre das großartig. Meine eigene Lösung für dieselbe Sache wäre gewesen:
Wie kommt es, dass meine Filterfunktion Klammern hat und das Snippet, das ich online gefunden habe, geschweifte Klammern um die Filterfunktion hat ( #(...)
vs. #{...}
)?
Definiert einen Satz ...
%Vor%Interessanterweise implementiert das Set IFn, so dass Sie es wie eine Funktion behandeln können. Das Verhalten der Funktion ist "wenn dieses Element in der Menge existiert, gebe es zurück".
%Vor%Andere Sammlungen, wie z. B. map und vector, stehen auf ähnliche Weise als Funktionen zur Verfügung und werden je nach Bedarf nach Schlüssel oder Index abgerufen.
%Vor%Süß, nein? : -)
Ja, #{42}
ist eine Funktion,
clojure.lang.IFn
Schnittstelle. nil
zurück. #{42}
, ob das Argument 42
ist (nur nil
und false
sind falsch, denken Sie daran). Der Clojure-Weg ist, alles zu einer Funktion zu machen, die sinnvollerweise eins sein könnte:
Dies
get
, filter
und map
und Tags und Links clojure