欢迎!请参阅 关于 页面了解有关此处的更多信息。
如在此线程中所述 (https://groups.google.com/forum/#!topic/clojure/i8Rz-AnCoa8) `s/keys`不会验证其中提到的规范是否有效。
`
建议的解决方案是单独编写代码来检查注册表,并警告未声明的规范。此代码的草图可在 https://gist.github.com/stuarthalloway/f4c4297d344651c99827769e1c3d34e9 提供。
虽然这种方法总体上是好的,但我相信它不适用于包含 "keys" 规范的多规范。 `s/form`在多规范上会返回该规范是多重规范(这是有意义的),但没有方法让客户端访问给定数据选择规范的工作方式。
这个代码草图的相关评论中提供了一个进一步的解决方案,但它依赖于 `resolve`,因此它不会在 Clojurescript 上工作。
我认为 `s/form`在此情况下表现正确,但拥有一个额外的函数,给定一个多重规范,可以返回一个函数或数据来探索当前实现,将是有用的。