我只是在學習語言,我有一個簡單的問題。爲什麼這項工作(構建{:key "value"}
):在Clojure的匿名函數上構建地圖
(#(assoc {} :key %) "value")
但這並不:
(#({:key %}) "value")
ArityException Wrong number of args (0) passed to: PersistentArrayMap clojure.lang.AFn.throwArity (AFn.java:429)
關於Python後者的語法是完全有效:
> (lambda v: {'key': v})('value')
{'key': 'value'}
編輯:感謝偉大的答案,很明顯我需要停止在Python中認爲#
等於lambda
。
'#(f x)==(fn [](f x)):。 #({x})==(fn []({x}))' – dsm
這是一個簡單的hacky,但是如果你想從anon fn返回一個元素:'#( - > {:key%})' – ClojureMostly
還有'#(散列圖:k%)' – cfrick