如何获得Clojure规范作为对象?
我想看看代表Clojure规范的数据结构 我怎样才能进去看看呢 给定的如何获得Clojure规范作为对象?,clojure,clojure.spec,Clojure,Clojure.spec,我想看看代表Clojure规范的数据结构 我怎样才能进去看看呢 给定的 (s/def ::myspec (s/keys :opt-un [::x ::y])) 我想漂亮地打印myspec的内部表示。您可以使用s/form将规范作为数据返回: 或s/description用于同一事物的缩写版本: (s/describe ::myspec) => (keys :opt-un [:user/x :user/y]) 这两者最终取决于Spec协议的descripe*方法: (defprotoco
(s/def ::myspec (s/keys :opt-un [::x ::y]))
我想漂亮地打印myspec的内部表示。您可以使用
s/form
将规范作为数据返回:
或s/description
用于同一事物的缩写版本:
(s/describe ::myspec)
=> (keys :opt-un [:user/x :user/y])
这两者最终取决于Spec
协议的descripe*
方法:
(defprotocol Spec
(conform* [spec x])
(unform* [spec y])
(explain* [spec path via in x])
(gen* [spec overrides path rmap])
(with-gen* [spec gfn])
(describe* [spec]))
因此,每个规范类型都负责描述自己。例如,map spec实现只是根据其初始输入重建其文字定义,如下所示:
(describe* [_] (cons `keys
(cond-> []
req (conj :req req)
opt (conj :opt opt)
req-un (conj :req-un req-un)
opt-un (conj :opt-un opt-un))))
您可以使用“将规范作为数据返回”的
s/form
:
或s/description
用于同一事物的缩写版本:
(s/describe ::myspec)
=> (keys :opt-un [:user/x :user/y])
这两者最终取决于Spec
协议的descripe*
方法:
(defprotocol Spec
(conform* [spec x])
(unform* [spec y])
(explain* [spec path via in x])
(gen* [spec overrides path rmap])
(with-gen* [spec gfn])
(describe* [spec]))
因此,每个规范类型都负责描述自己。例如,map spec实现只是根据其初始输入重建其文字定义,如下所示:
(describe* [_] (cons `keys
(cond-> []
req (conj :req req)
opt (conj :opt opt)
req-un (conj :req-un req-un)
opt-un (conj :opt-un opt-un))))