In meiner Anwendung muss ich das Schlüsselwort clojure konvertieren, z. : var_name in eine Zeichenfolge "var_name". Irgendwelche Ideen, wie das gemacht werden könnte?
100
user=> (doc name)
-------------------------
clojure.core/name
([x])
Returns the name String of a string, symbol or keyword.
nil
user=> (name :var_name)
"var_name"
(source name)
?name
funktioniert sollte nicht von Interesse sein. Der Docstring ist der Vertrag. Alles andere ist ein Implementierungsdetail, auf das man sich nicht verlassen sollte.(name :foo/123/bar)
"bar" ist. Wenn Sie den vollständigen Pfad eines Schlüsselworts möchten, das Sie verwenden müssen,subs
oder so ähnlich(str (namespace k) "/" (name k))
Tatsächlich ist es genauso einfach, den Namespace-Teil eines Schlüsselworts abzurufen:
Beachten Sie, dass Namespaces mit mehreren Segmenten durch ein '.' Und nicht durch ein '/' getrennt werden.
Dies funktioniert auch mit Namespace-qualifizierten Schlüsselwörtern:
quelle
Beachten Sie, dass die Antwort von kotarak nicht den Namespace-Teil des Schlüsselworts zurückgibt, sondern nur den Namensteil - also:
Wenn Sie seinen anderen Kommentar verwenden, erhalten Sie das, wonach Sie gefragt haben:
quelle
Es ist keine mühsame Aufgabe, einen Datentyp in eine Zeichenfolge zu konvertieren. Hier ein Beispiel mit str .
quelle
Dadurch erhalten Sie auch eine Zeichenfolge aus einem Schlüsselwort:
quelle
str
wird in Ihrem Beispiel nicht benötigt.