除了地图和矢量,get 的一个常见用途是在字符串上:
(get "Cthulhu" 2) ;; => \h
get 也适用于集合和原生 Java(Script) 数组。 ClojureScript 和 JavaScript 互操作中的一种可能用法:
(def js-array (-> (js/Array 10) ;Create and fill native JS array
(.fill "a")
(.map (fn [_ i] i))))
(get js-array 3) ; => 3
再举一个例子,get 用于在集合中按项目查找的作品:
(get #{:b :c :a} :c) ;;=> :c
请注意,它不适用于(排序的)集合和索引,例如:
(get (sorted-set :b :a :c) 1) ;; throws exception
此外,地图、向量和集合充当其成员的函数,因此您通常可以完全避免使用 get:
(#{:a :b :c} :b) ; => :b
({:a 1 :b 2 :c 3} :b) ; => 2
([:a :b :c] 1) ; => :b
与它们一起使用get的好处是你可以提供一个默认值:
(get {:a :b :c} :d) ; => nil
(get {:a :b :c} :d :not-found) ; => :not-found
另请参阅@Thumbnail's answer 以了解 get 如何在后台工作。