在<>2024年的Clojure状态调查!

欢迎!请参阅<(Value-b>)页面了解如何使用本页面。

+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 期望的是一个符号到值的映射的映射,而不是关键字到值的映射。不确定这可能是规范中的疏忽,还是它根本不应该被支持。

谢谢,这样有效!
  作者:
过去,这是无意中允许的,现在已经被加强了。重要的是,以前它默默地不起作用。
...