map-map
, map-map-keys
এবংmap-map-values
আমি এটির জন্য ক্লোজরে বিদ্যমান কোন কার্যকারিতা সম্পর্কে জানি না, তবে আপনি এখানে map-map-values
অনুলিপি করতে পারেন এমন ফাংশনটির একটি বাস্তবায়ন এখানে । এটি দুটি ঘনিষ্ঠভাবে সম্পর্কিত ফাংশন নিয়ে আসে map-map
এবং map-map-keys
এটি স্ট্যান্ডার্ড লাইব্রেরি থেকেও হারিয়ে যায়:
(defn map-map
"Returns a new map with each key-value pair in `m` transformed by `f`. `f` takes the arguments `[key value]` and should return a value castable to a map entry, such as `{transformed-key transformed-value}`."
[f m]
(into (empty m) (map #(apply f %) m)) )
(defn map-map-keys [f m]
(map-map (fn [key value] {(f key) value}) m) )
(defn map-map-values [f m]
(map-map (fn [key value] {key (f value)}) m) )
ব্যবহার
আপনি map-map-values
এই মত কল করতে পারেন :
(map-map-values str {:a 1 :b 2})
;; => {:a "1", :b "2"}
এবং অন্যান্য দুটি ফাংশন এর মতো:
(map-map-keys str {:a 1 :b 2})
;; => {":a" 1, ":b" 2}
(map-map (fn [k v] {v k}) {:a 1 :b 2})
;; => {1 :a, 2 :b}
বিকল্প বাস্তবায়ন
আপনি যদি কেবলমাত্র map-map-keys
বা map-map-values
আরও সাধারণ map-map
ক্রিয়াকলাপ ছাড়া চান , আপনি এই প্রয়োগগুলি ব্যবহার করতে পারেন, যা নির্ভর করে না map-map
:
(defn map-map-keys [f m]
(into (empty m)
(for [[key value] m]
{(f key) value} )))
(defn map-map-values [f m]
(into (empty m)
(for [[key value] m]
{key (f value)} )))
এছাড়াও, এখানে বিকল্প বিকল্প বাস্তবায়নের পরিবর্তে এর map-map
উপর ভিত্তি করে clojure.walk/walk
তৈরি করা হয় into
, যদি আপনি এই শব্দবন্ধটিকে পছন্দ করেন:
(defn map-map [f m]
(clojure.walk/walk #(apply f %) identity m) )
পেরেলেল সংস্করণ - pmap-map
ইত্যাদি
আপনার যদি প্রয়োজন হয় তবে এই ফাংশনগুলির সমান্তরাল সংস্করণ রয়েছে। তারা কেবল pmap
পরিবর্তে ব্যবহার করুন map
।
(defn pmap-map [f m]
(into (empty m) (pmap #(apply f %) m)) )
(defn pmap-map-keys [f m]
(pmap-map (fn [key value] {(f key) value}) m) )
(defn pmap-map-values [f m]
(pmap-map (fn [key value] {key (f value)}) m) )