请分享您的看法,参加 2024 年 Clojure 状态调查!

欢迎!有关如何使用此功能的更多信息,请参阅 关于页面

+1
ClojureScript

(let [{x :x} '({:x "foo"})] x)
;; => "foo"

2 个答案

+1

这与工具无关 - 这仅仅是 Clojure 中解构的方式

user=> (clojure.pprint/pprint (destructure '[{a :a} []]))
[map__6
 []
 map__6
 (if
  (clojure.core/seq? map__6)
  (if
   (clojure.core/next map__6)
   (clojure.lang.PersistentArrayMap/createAsIfByAssoc
    (clojure.core/to-array map__6))
   (if
    (clojure.core/seq map__6)
    (clojure.core/first map__6)
    clojure.lang.PersistentArrayMap/EMPTY))
  map__6)
 a
 (clojure.core/get map__6 :a)]
nil

这种特定行为是实施以下票据的结果: https://clojure.atlassian.net/browse/CLJ-2603

谢谢。为了澄清:这种行为是故意为之还是有意外的副作用(其他有意行为的副作用)?
by
我不确定,但考虑到这个工单,我会假设后者。
by
是的,这就是预期的行为。
0
by

好的,我刚刚意识到这可能是在 shadow-cljs 或其他下游工具中可能出现的问题。

by
(顺便说一下,我在这里使用 ClojureScript 1.11.57)
欢迎来到 Clojure 问答社区,在这里您可以提问并获得 Clojure 社区成员的答案。
...