जवाबों:
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)
"बार" क्यों है यदि आप किसी ऐसे कीवर्ड का पूर्ण पथ चाहते हैं जिसका आपको उपयोग करने की आवश्यकता है 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"
ध्यान दें कि कोटरक का उत्तर कीवर्ड के नामस्थान भाग को वापस नहीं करेगा, बस नाम भाग - तो:
(name :foo/bar)
>"bar"
उनकी अन्य टिप्पणी का उपयोग करने से आपको जो मांगा गया है:
(subs (str :foo/bar) 1)
>"foo/bar"
किसी भी डेटा प्रकार को एक स्ट्रिंग में बदलना एक थकाऊ काम नहीं है, यहाँ 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
अपने उदाहरण में जरूरत नहीं है।