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

谢谢。为了澄清:这是预期行为还是意外的副作用(其他预期行为的结果)?
头像:
我不敢肯定,但根据这个票据,我猜测是后者。
头像:
是的,这就是预期的行为。
投票数:0
头像:

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

头像:
(顺便说一句,我在这里使用 ClojureScript 1.11.57)
欢迎使用 Clojure Q&A,您可以在这里提问并获得来自 Clojure 社区成员的回答。
...