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

欢迎!请参阅 关于 页面了解此工作的更多详细信息。

+2
语法和读取器

1.8.0:

clj-rcon-test.core=> (defn- hi [as-codec & {:keys [offset] :or {:offset 0}}]
                #_=>   (println "hi"))
#'clj-rcon-test.core/hi

1.10.0:

clj-rcon-test.core=> (defn- hi [as-codec & {:keys [offset] :or {:offset 0}}]
                #_=>   (println "hi"))
Syntax error macroexpanding clojure.core/defn- at (form-init17556793069765460591.clj:1:1).
:offset - failed: simple-symbol? at: [:fn-tail :arity-1 :params :var-params :var-form :map-destructure :or 0] spec: :clojure.core.specs.alpha/or
{:keys [offset], :or {:offset 0}} - failed: simple-symbol? at: [:fn-tail :arity-1 :params :var-params :var-form :local-symbol] spec: :clojure.core.specs.alpha/local-name
{:keys [offset], :or {:offset 0}} - failed: vector? at: [:fn-tail :arity-1 :params :var-params :var-form :seq-destructure] spec: :clojure.core.specs.alpha/seq-binding-form
as-codec - failed: vector? at: [:fn-tail :arity-n :bodies :params] spec: :clojure.core.specs.alpha/param-list

clj-rcon-test.core=>

为了获得上下文,这是我正在尝试排错的内容: https://github.com/gpittarelli/clj-rcon/blob/master/src/clj_rcon/codecs.clj#L6

1 个回答

+5

选定
 
最佳答案

这里的问题是`:or` 期望一个从符号到值的映射,而不是从关键字到值的映射。不确定这是否是规范中的疏忽,或者是它从未应该被支持。

谢谢,这有效了!
之前无意中允许过,现在已加强控制。重要的是,之前它是静默不工作的。
...