重现
(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` 的兼容性是否是必需的:如果规范提供了一个函数,它可以用“spec”路径(即可以指向键的路径)完成相同的事情,那就很好了。