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

欢迎!请在 关于 页面查看有关如何使用本平台的更多信息。

0
Collections

当在映射解构中意外交换关键字和(之前未定义的)符号时,会正确地抛出错误

(let (link: {:b b} {:b 1}) b)

=> CompilerException java.lang.RuntimeException: 无法在当前上下文中解析符号: b,编译时:(/tmp/form-init7939480206147277345.clj:1:1)

但是,当定义了符号(以下使用 "a")时,存在一个更为微妙的问题

(def a 0)
(let (link: {:a a} {:a 1}) a)
=> nil

期望:解构应只接受 :or、:keys、:as、:strs 和 :syms 作为解构映射的键。

3 个答案

0

评论者:michaelblume

这可能是 CLJ-1613 的重复问题

0

评论者:claj

Michael,我认为这是一个有区别的问题。

0
...