22
ファンクションパラメータを破棄することはできますが、依然としてオリジナルを使用できる状態にできますか?私が今やっているやり方は、関数本体の中にちょうどlet
という形を使っていますが、それをやる方が簡単なのかどうか疑問です。元の値を保持したままClojure関数のパラメータを破棄します。
ファンクションパラメータを破棄することはできますが、依然としてオリジナルを使用できる状態にできますか?私が今やっているやり方は、関数本体の中にちょうどlet
という形を使っていますが、それをやる方が簡単なのかどうか疑問です。元の値を保持したままClojure関数のパラメータを破棄します。
はあまりにも機能のための:as
作品のように思える:
vector
(defn test [[x y :as v]]
{:x x :y y :v v})
(test [1 2 3 4])
=> {:x 1 :y 2 :v [1 2 3 4]}
でhash-map
(defn test2 [{x :x y :y :as m}]
{:x x :y y :m m})
(test2 {:x 1 :y 2 :z 3})
=> {:x 1 :y 2 :m {:x 1 :y 2 :z 3}}
で、この素晴らしいブログ記事を参照してください:http://blog.jayfields.com/2010/07/clojure-destructuring.html
私は聞かせ信じて、FN、 defnなどはすべてsを使いますame destructuring syntaxです。 – JohnJ
@ JohnJ:はい、構造化セマンティクスを一貫させるためです。 – Ankur
@JohnJそれは本当です。私は最初にブログ投稿で混乱しました。なぜなら、それは単に例を使っているからです。 letとfn/defnの違いは、バインディング形式を使用していることです。 –