আমার অ্যাপ্লিকেশনটিতে আমার ক্লোজার কিওয়ার্ড যেমন রূপান্তর করা দরকার। : var_name একটি স্ট্রিং "var_name" এ। কোনও ধারণা কীভাবে এটি করা যেতে পারে?
উত্তর:
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
আপনার উদাহরণে প্রয়োজন হয় না।