更简洁的方法来记录记录和地图?

Mic*_*ahl 1 clojure clojure.spec

制作地图或记录规范的方式是否比官方规范指南中的方式更简洁?

(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]))
Run Code Online (Sandbox Code Playgroud)

理想情况下,如果我能写出像这样的东西会很好

(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]))
Run Code Online (Sandbox Code Playgroud)

Ale*_*eph 5

Clojure团队有意识地决定单独指定值和键集(您可以阅读讨论以获得更长的解释).你的建议被认为是clojure.spec中的一种反模式,故意不可能.

如果您想要单语句嵌套结构规范,最好使用Plumatic Sc​​hema.