2016-05-09 12 views
1

Metadaten einer Variablen wie die docstring kann wie so gelesen werden: Hier kann die Funktion map als Beispiel verwendet wird:String Symbol in ClojureScript

(-> cljs.core/map var meta :doc) 
;= "Returns a lazy sequence consisting of the result of appl.... 

Was würde ich das gleiche Ergebnis zu tun haben, zu erhalten wenn nur der Funktionsname und sein Namespace als String vorliegen (wie "cljs.core/map")?

Das Einfädeln der Zeichenfolge mit der Funktion symbol führte zu einem Fehler.

Antwort

1

Dies ist eine Möglichkeit, es zu tun:

* Clojure Datei *

(ns myproject.macros 
    (:require [clojure.string :as str])) 

(defmacro doc1 [s] 
    (let [sym (apply symbol (str/split s #"/"))] 
     `(-> ~sym (var) (meta) :doc))) 

* ClojureScript Datei *

(ns myproject.main 
    (:require-macros [myproject.macros :as m])) 

(prn (m/doc1 "cljs.core/inc")) 

=> „eine Reihe Gibt einen größer als num. "