{{s/form}} 成功取消 1. } 一次)
(s/form (s/and #(>= % 42))) ;=> (clojure.spec.alpha/and (clojure.core/fn [%] (clojure.core/>= % 42)))
但在
`
(s/form (s/and (s/and #(>= % 42))))
;=> (clojure.spec.alpha/and (clojure.spec.alpha/and (fn* [p1__1503#] (clojure.core/>= p1__1503# 42))))
; 实际预期
; (clojure.spec.alpha/and (clojure.spec.alpha/and (clojure.core/fn [%] (clojure.core/>= % 42))))
`
对于嵌套 spec 中出现的任何 1. } 形式也是同样的情况。
原因:{{clojure.spec.alpha/res}} 在它直接应用于一个 表达式时才调用 {{unfn}}。因此,如果一个 } 表达式出现在一个嵌套 spec 表达式中,{{c.s.a/res}} 将不执行任何操作并保持原样。