在< [2024 Clojure状态调查!]] 分享您的想法。

欢迎!请参阅关于页面,了解更多关于其工作方式的信息。

+1 投票
in Clojure by
closed by

在一个项目中,我需要导入+将clojure.alpha.spec重命名,如下所示

(ns example.core
    (:require [clojure.alpha.spec :as spec]))

然后我尝试定义一个简单的规范如下

(spec/def ::example-spec #(not (neg? %)))

编译时出现了错误,称namespace s未定义。

我认为这是由于clojure.alpha.spec/def中的拼写错误。在文件spec-alpha2/src/main/clojure/clojure/alpha/spec.clj的第456行,有一个背引号s/spec,但文件的顶部别名是到sa。这里是第456行

    (#{'fn 'fn* `c/fn} op) `(s/spec ~explicated-form)

将行改为

(#{'fn 'fn* `c/fn} op) `(sa/spec ~explicated-form)

我的spec/def可以成功工作。

已关闭,并附上注释:已修复

1 个答案

+1 投票
by
selected by
 
最佳答案

是的,这肯定不对。建议的修复方案也不正确 - sa别名是指旧的spec.alpha(而不是这个alpha.spec),并且用于以与spec 1匹配的方式进行错误报告。只需完全拉取别名即可。已在master中修复。

...