W mojej aplikacji muszę przekonwertować słowo kluczowe clojure np. : nazwa_zmiennej w ciąg „nazwa_zmiennej”. Jakieś pomysły, jak to można zrobić?
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
działa, nie powinno interesować. Dokumentacja to umowa. Wszystko inne jest szczegółem implementacyjnym, na którym nie należy polegać.(name :foo/123/bar)
jest to „bar”. Jeśli chcesz mieć pełną ścieżkę słowa kluczowego, którego musisz użyćsubs
lub coś w stylu(str (namespace k) "/" (name k))
Właściwie równie łatwo jest uzyskać część słowa kluczowego z przestrzenią nazw:
Zwróć uwagę, że przestrzenie nazw z wieloma segmentami są oddzielone znakiem „.”, A nie „/”
Działa to również z kwalifikowanymi słowami kluczowymi przestrzeni nazw:
źródło
Zauważ, że odpowiedź kotaraka nie zwróci części słowa kluczowego będącej przestrzenią nazw, tylko część nazwy - więc:
Użycie jego drugiego komentarza daje to, o co prosiłeś:
źródło
Konwersja dowolnego typu danych na ciąg nie jest żmudnym zadaniem, oto przykład użycia str .
źródło
To również da ci ciąg ze słowa kluczowego:
źródło
str
nie jest potrzebne w twoim przykładzie.