重现
(require '[clojure.spec.alpha :as s]
(s/def :foo/user-map (s/map-of string? int?))
(s/explain-data :foo/user-map {"hi" "foo"})
;; 实际值
;; #:cljs.spec.alpha{:problems
;; ({:path [1],
;; :pred int?,
;; :val "foo",
;; :via [:foo/user-map],
;; :in ["hi" 1]})}
;; 预期: `:in`值应为 ["hi"] ?
(s/explain-data :foo/user-map {:hi 2})
;; 实际值
;; #:cljs.spec.alpha{:problems
;; ({:path [0],
;; :pred string?,
;; :val :hi,
;; :via [:foo/user-map],
;; :in [:hi 0]})}
;; 预期: 我不确定,因为路径无法“指向”键
动机:给定的某些顶级数据(在本例中为`{"hi" "foo"}`)和`:in`路径,我希望能找到有问题的数据(在这个例子中是`"foo"`)。
在不匹配的情况中,映射的值不匹配时,`:in`路径与`get-in`等函数不兼容,但它可以是。
在映射的键不匹配的情况下,无法使用`get-in`来“指向”键,因此我不确定正确的修复是什么。
我不知道兼容`get-in`是否是必需的:如果规范提供了一个具有“规范”路径的函数来完成相同的事情(即可以指向键的路径),那么这将很好。