3
我使用Clojure来实现(书面)标准文档。总的来说,我对Clojure允许我编写符合标准不同部分的代码感到满意。着眼于未来,我正在尝试为它编写一个clojure.spec
。在文档中,他们使用命名字段定义各种结构化数据元素。然而,不同结构中的字段具有相同的名称,例如“红色”结构具有“值”字段,该字段是字符串,但“蓝色”结构具有“值”字段,该字段是整数。在编写规格时如何处理这个问题?clojure规格的地图和它们的值
(s/def ::value ???)
(s/def ::red (s/keys :req [::value ...]))
(s/def ::blue (s/keys :req [::value ...]))
的official advice,按我的理解,是有名的键应该具有相同的语义无处不在。
我该如何解决这个问题?我可以称它们为“红值”和“蓝值”,但这使得代码和标准之间的对应关系不太清晰。我可以把每个结构放在它自己的命名空间吗?
感谢:
您可以用类似的值验证。为了检查我的理解 - ':: red'中的红色与':red/value'中的红色完全无关,不是吗?还有什么方法可以在这里使用命名空间映射,例如'#:: red {:value“hi”...}' –
Re red - yes。命名空间映射语法只是语法,所以'#:: red {:value“hi”}'和'{:: red/value“hi”}'是完全相同的数据。我的意思是,你可以使用,无关紧要,这是完全正交的数据是否符合规范。 –