制作地图或记录规范的方式是否比官方规范指南中的方式更简洁?
(defrecord Person [first-name last-name email phone])
(s/def ::first-name string?)
(s/def ::last-name string?)
(s/def ::email ::email-type)
(s/def ::person (s/keys :req-un [::first-name ::last-name ::email]
:opt-un [::phone]))
理想情况下,如果我能写出像
这样的东西会很好(defrecord Person [first-name last-name email phone])
(s/def ::person (s/keys :req-un [:first-name string?
:last-name string?
:email ::email-type]
:opt-un [:phone]))
答案 0 :(得分:5)
这是Clojure团队有意识的决定to have values and key sets spec'ed separately(您可以阅读this讨论以获得更长的解释)。你的建议被认为是clojure.spec中的反模式,故意made not possible。
如果您想要单语句嵌套结构规范,最好使用Plumatic Schema。