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