Clojure: Apply a Function To All Value of a Map

(defn update-values [m f & args]
  (reduce (fn [r [k v]] (assoc r k (apply f v args))) {} m))

(update-values {:a 1 :b 2 :c 3} inc)
;;=> {:c 4, :b 3, :a 2}

(update-values {:a 1 :b 2 :c 3} + 10)
;;=> {:c 13, :b 12, :a 11}

other implementation

(defn update-values [m f & args]
  (into {} (for [[k v] m] [k (apply f v args)])))

using Specter library

(transform [MAP-VALS] inc {:a 1 :b 2 :c 3})
;; => {:a 2, :b 3, :c 4}

source blog.jayfields.com

also see Update the values of multiple keys

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Quan

10 bài viết.
2 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
1 0
Clojure supports flexible concurrency models for real world complexity: (Link): builtin support. (Link): similar to Golang concurrency model, w...
Quan viết 12 tháng trước
1 0
Bài viết liên quan
White
0 0
Clojure là ngôn ngữ functional có hỗ trợ OOP. Về mặt khoa học máy tính, có nhiều cách để thực hiện đa hình. Ở phiên bản trước 1.2, đa hình trong Cl...
Ngoc Dao viết gần 2 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
10 bài viết.
2 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!