Ert*_*tin 6 functional-programming specifications clojure clojurescript clojure.spec
我无法理解clojure的意图.规范
它解决了什么样的问题?
我们为什么要使用它?
Ale*_*ler 29
spec允许您创建数据和功能的规范.规范是它们的核心预测(基于现有的Clojure谓词)和结构,而不是基于类型,正如您在静态类型语言中看到的那样.通过基于谓词的规范,您可以编写比大多数类型系统更具表现力并使用与代码相同的语言的规范.
在函数上定义的规范指定了args的规范,返回值以及args 和 return 的函数.最后一个允许检查比在大多数类型或合同系统中检查的更大范围的事物(容易).
定义规格后,您可以使用它们:
您可以使用规范来改进开发(通过澄清和记录您的意图,捕获无效调用,并断言数据有效性),测试(捕获无效调用,断言有效性,生成示例数据以及为您的speceded函数生成自动测试)和您的生产(通过使用一致性进行解构).
此外,Clojure核心使用规范将导致更好的错误消息,并扩展核心库使用的开发时间检查,以便更早地发现错误.