4
在clojure中,我可以使用defnk来获取命名参数。我如何在ClojureScript中实现同样的功能?如何在ClojureScript中使用命名参数?
在clojure中,我可以使用defnk来获取命名参数。我如何在ClojureScript中实现同样的功能?如何在ClojureScript中使用命名参数?
在ClojureScript命名ARGS功能是相同的Clojure:
(defn f [x & {:keys [a b]}]
(println (str "a is " a " and b is " b)))
(f 1)
; a is and b is
(f 1 :a 42)
; a is 42 and b is
(f 1 :a 42 :b 108)
; a is 42 and b is 108
如果你想默认值,然后改变原来到:
(defn f [x & {:keys [a b] :or {a 999 b 9}}]
(println (str "a is " a " and b is " b)))
(f 1)
; a is 999 and b is 9
这与漂亮的答案对于Clojure - named arguments
感谢您的回答。但现在我真的很困惑。为什么defnk已经投入到Clojure中呢? – Zubair 2012-01-03 19:04:21
默认情况下,clojure中没有这种东西。它可能包含在clojure.contrib中(不知道它是否是这样),但是这种宏在标准clojure库中不存在。 – 2012-01-03 20:07:10
'defnk'在clojure.contrib中定义。它是在Clojure 1.2添加完整的地图解构绑定之前创建的。 'defnk'现在应该被认为是过时的(事实上单片clojure.contrib与Clojure 1.3不兼容) – 2012-01-19 22:03:27