请在Clojure 2024状态调查!中分享您的想法。

欢迎!请访问关于页面了解关于如何使用本站的一些更多信息。

+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](https://clojure.atlassian.net/browse/CLJ-2603)

谢谢。为了明确:这是有意为之的行为吗,还是它是一种意料之外的影响(其他预期行为的结果)?
by
我不确定,但考虑到这个票据,我会假设后者。
by
是的,这是预期和希望的行为。
0
by

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

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