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

谢谢。为了澄清:这是有意为之的行为,还是它是有意行为的其他方面的意外副作用(副作用)?
不确定,但根据该票据,我假设后者。
是的,这是预期的行为。

好吧,我刚刚意识到这可能是我正在使用的 shadow-cljs 或其他下游工具的问题。

顺便说一句,我这里正在使用 ClojureScript 1.11.57。
欢迎光临 Clojure Q&A,在这里您可以提出问题,并从 Clojure 社区成员那里获得答案。
...