Clojureのget-inの使い方メモ

シゴトで使うようになったclojure。get-inなる関数が気になったので使い方をチョット調べました。

(ns getting-started-clojure.get-in)

(def m {:username "sally"
        :profile {:name "Sally Clojurian"
                  :address {:city "Austin" :state "TX"}}})

(comment
  (get-in m [:profile :name])
  ;; "Sally Clojurian"
  (get-in m [:profile :address :city])
  ;; "Austin"
  (get-in m [:profile :address :city :number] "not found")
  ;; "not found"
  )

(def n [{:username "first"} {:username "second"}])

(comment
  (get-in n [0 :username])
  ;; "first"
  )

リストやマップから特定の値を名前通り取り出すもののよう。

マップの場合はキーを。リストの場合は0始まりの添字を使うみたいですね。