Ist pound-Zitat, (hash-Zitat, #') in Clojure läuft die Entschlossenheit und symbol-Funktionen?
Vielleicht können Sie mir helfen, diese in der Dokumentation. Ich bin mit der pound-Zitat, um passieren zu können um ungewichtete function-Namen vor der Ausführung. Zum Beispiel:
(#'cons 1 ())
;(1)
(defn funcrunner [func a b]
(func a b))
(funcrunner cons 'a ())
;(a)
(funcrunner 'cons 'a ())
'()
(funcrunner #'cons 'a ())
;(a)
#'cons
;#'clojure.core/cons
(resolve (symbol 'cons))
;#'clojure.core/cons
Meine Vermutung ist, dass dies eine reader-makro.
Meine Frage ist, (a) Was ist die pound-Zitat, ( # ' ) Kurzform für? (b) Können Sie erklären, was es tut? (c) Können, suchen Sie es in der Google docs? (d) Ist es eigentlich die Kurzform für die Lösung und symbol-Funktionen?
PS - Für diejenigen, die nicht in den USA - # ist auch bekannt als "hash" oder "cross-hash'.
PPS - ich bin mir bewusst, dass mein Beispiel macht die Notwendigkeit dieser etwas redundant. Ich bin daran interessiert zu wissen, ob dies ist völlig überflüssig, oder gibt es spezifische use-cases.
- Siehe auch: stackoverflow.com/questions/9113387/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
#'
ist eine reader-makro, das expandiert zu(var foo)
. Was du hier tust ist nicht vorbei um ungewichtete Funktionen, Sie sind vorbei vars, die Funktionen enthalten. Der Grund, warum dies funktioniert, wie es tut, ist, weil vars sind Funktionen, die sich Ihre enthaltenen Wert und nennen Sie es:Beachten Sie, dass, wenn ich der Funktion ein var zurückgegeben wurde. Es sieht aus wie das, was Sie getan haben! 🙂
#'
ist die reader-makro fürvar
. Sehen http://clojure.org/special_forms#var und http://clojure.org/vars(var foo)
gibt die var Namen von dem symbolfoo
, die halten kann jede Art von Wert, einschließlich Funktionen.