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