Clojure कीवर्ड को एक स्ट्रिंग में कैसे बदलें?


100

मेरे आवेदन में मुझे क्लोजर कीवर्ड को परिवर्तित करने की आवश्यकता है जैसे। : var_name एक स्ट्रिंग "var_name" में। किसी भी विचार कैसे किया जा सकता है?

जवाबों:


166
user=> (doc name)
-------------------------
clojure.core/name
([x])
  Returns the name String of a string, symbol or keyword.
nil
user=> (name :var_name)
"var_name"

3
मैं अधिक पूर्ण उत्तर की कल्पना नहीं कर सकता, लेकिन सिर्फ मनोरंजन के लिए मैं किसी के साथ आने की हिम्मत करूंगा।
हमीश ग्रुबीजन

2
@ हमीश शायद जोड़कर (source name)?
पोन्ज़ाओ

2
कैसे nameकाम करता है ब्याज का नहीं होना चाहिए। डॉकस्ट्रिंग कॉन्ट्रैक्ट है। कुछ भी एक कार्यान्वयन विवरण है, किसी पर भरोसा नहीं करना चाहिए।
कोट्टारक

3
धन्यवाद कोटक! मैं इस क्लोजर को हर दिन अधिक प्यार कर रहा हूं! यह मेरा तीसरा दिन है।
संतोष

4
हो सकता है कि यह उत्तर बताए कि (name :foo/123/bar)"बार" क्यों है यदि आप किसी ऐसे कीवर्ड का पूर्ण पथ चाहते हैं जिसका आपको उपयोग करने की आवश्यकता है subsया जैसे कुछ(str (namespace k) "/" (name k))
AnnanFay

13

दरअसल, किसी कीवर्ड के नाम स्थान को प्राप्त करना उतना ही आसान है:

(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"

12

ध्यान दें कि कोटरक का उत्तर कीवर्ड के नामस्थान भाग को वापस नहीं करेगा, बस नाम भाग - तो:

(name :foo/bar)
>"bar"

उनकी अन्य टिप्पणी का उपयोग करने से आपको जो मांगा गया है:

(subs (str :foo/bar) 1)
>"foo/bar"

0

किसी भी डेटा प्रकार को एक स्ट्रिंग में बदलना एक थकाऊ काम नहीं है, यहाँ 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.