2024 Clojure 调查问卷! 中分享您的想法。

欢迎!请参阅 关于 页面以获取有关如何使用本站的一些更多信息。

0
规范
将规范别名化是一种有用的做法。例如,一个常见的 ':myproj/name' 规范可能用于两个不同的键,例如 ':myproj.user/name' 和 ':myproj.admin/name'。

然而,当这些在规范中使用时,':via' 路径将包含重复项,例如包括 ':myproj/name' 两次。

重现

1. clj -Srepro -Sdeps '{:deps {org.clojure/spec.alpha {:mvn/version "0.2.176"}}}'


(require '[clojure.spec.alpha :as s])
(s/def :myproj/name (s/and string? #(< 2 (count %))))
(s/def :myproj.user/name :myproj/name)
(s/def :myproj/user-args (s/cat :name :myproj.user/name))
(-> (s/explain-data :myproj/user-args [""]) ::s/problems pprint)

[{:path [:name],
  :pred (clojure.core/fn [%] (clojure.core/< 2 (clojure.core/count %))),
  :val "",
  :via [:myproj/user-args :myproj/user-args :myproj/name :myproj/name],
  :in [0]}]


实际:问题的 ':via' 路径为 '[:myproj/user-args :myproj/user-args :myproj/name :myproj/name]'

预期:我本希望看到在 ':via' 中出现规范 ':myproj.user/name',因为 ':myproj/user-args' 规范是在 ':myproj.user/name' 的基础上构建的。

1 回答

0
参考:[https://clojure.atlassian.net/browse/CLJ-2410](https://clojure.atlassian.net/browse/CLJ-2410) (由 bbrinck 报告)
...