2010年3月24日水曜日

Clojure マップ

Clojureには、マップというキーと値をペアとして持つコレクションがあります。
例えば、
{"x" "a" "y" "b"}
とかき、xがキーでその対応する値がa, yがキーでその対応する値がbとなります。キーと値を交互に書くわけです。

キーにはキーワード(:xxx)がよくつかわれます。
{ :first-name "Saki" :family-name "Aibu"}
みたいに。

マップは関数としても使えます。

(def girl { :first-name "Saki" :family-name "Aibu"})
(girl :first-name)
みたいに。

で、Clojureには分配束縛っていうものがあって、必要なものだけバインドすることができます。

(defn greet-author [{fname :first-name}]
  (println "Hello, " fname ))
(greet-author {:first-name "Saki" :family-name "Aibu"})
とかくと、
Hello,Saki
と表示されます。

分配束縛はマップ以外にも使えます。

(let [[x y] [1 2 3]]
  [x y])
これは、[1 2]になります。

0 件のコメント: