답변:
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
작품을 관심 안된다. 독 스트링은 계약입니다. 그 밖의 것은 구현 세부 사항이므로 의존해서는 안됩니다.
(name :foo/123/bar)
"bar" 인지 설명 할 것 입니다. 당신은 키워드의 전체 경로를 원하는 경우에 당신은 사용할 필요가 subs
또는 뭔가처럼(str (namespace k) "/" (name k))
실제로 키워드의 네임 스페이스 부분을 얻는 것도 쉽습니다.
(name :foo/bar) => "bar"
(namespace :foo/bar) => "foo"
여러 세그먼트가있는 네임 스페이스는 '/'가 아닌 '.'로 구분됩니다.
(namespace :foo/bar/baz) => throws exception: Invalid token: :foo/bar/baz
(namespace :foo.bar/baz) => "foo.bar"
그리고 이것은 네임 스페이스 한정 키워드에서도 작동합니다.
;; assuming in the namespace foo.bar
(namespace ::baz) => "foo.bar"
(name ::baz) => "baz"
데이터 유형을 문자열로 변환하는 것은 지루한 작업이 아닙니다. 다음은 str 을 사용한 예제 입니다.
(defn ConvertVectorToString []
(let [vector [1 2 3 4]]
(def toString (str vector)))
(println toString)
(println (type toString)
(let [KeyWordExample (keyword 10)]
(def ConvertKeywordToString (str KeyWordExample)))
(println ConvertKeywordToString)
(println (type ConvertKeywordToString))
(ConvertVectorToString) ;;Calling ConvertVectorToString Function
Output will be:
1234
java.lang.string
10
java.lang.string
이것은 또한 키워드의 문자열을 제공합니다.
(str (name :baz)) -> "baz"
(str (name ::baz)) -> "baz"
str
귀하의 예에서는 필요하지 않습니다.