Em meu aplicativo, preciso converter a palavra-chave clojure, por exemplo. : var_name em uma string "var_name". Alguma ideia de como isso poderia ser feito?
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
funciona não deve ser de interesse. O docstring é o contrato. Qualquer outra coisa é um detalhe de implementação, no qual não se deve confiar.(name :foo/123/bar)
é "bar". Se você quiser o caminho completo de uma palavra-chave que você precisa usarsubs
ou algo como(str (namespace k) "/" (name k))
Na verdade, é igualmente fácil obter a parte do namespace de uma palavra-chave:
Observe que os namespaces com vários segmentos são separados por '.', Não por '/'
E isso também funciona com palavras-chave qualificadas de namespace:
fonte
Observe que a resposta de kotarak não retornará a parte do namespace da palavra-chave, apenas a parte do nome - então:
Usar seu outro comentário dá o que você pediu:
fonte
Não é uma tarefa tediosa converter qualquer tipo de dados em uma string. Aqui está um exemplo usando str .
fonte
Isso também fornecerá uma string de uma palavra-chave:
fonte
str
não é necessário em seu exemplo.