Prismatic向Schema 0.2中添加了数据类型强制转换

Prismatic向其Clojure数据描述库即Schema的0.2版本中添加了数据类型强制转换。强制转换的添加意味着该库不会只是简单地拒绝类型错误的数据,而是可以将它配置为修改实例以符合模式。

在Clojure中,习惯用关键词作为Map的键,也就是说,当收到JSON对象时,通常有若干样板代码来执行转换。以前,这种转换需要在试图验证请求之前执行。现在,如果模式使用关键字定义键,Schema会为开发人员处理上述过程。当然,开发人员可以编写他们自己的满足特定需求的强制转换器。伴随这项新功能,Prismatic声称这项变化使数据验证的时间减少到五分之一。

Schema是去年九月份发布的,其目标是“获得Clojure类型系统的诸多好处,而麻烦更少。” Clojure的core.typed库也是该语言的一个类型系统,Schema发布的时候,似乎与它形成了竞争。那时,core.typed的作者Ambrose Bonnaire-Sergeant反驳了这个观点,指出它们实际上是互补的,并在之后接受InfoQ关于core.typed的采访时重申了这一点。

Jason Wolfe是该库的主要作者。InfoQ获得了就Schema的未来与他进行交谈的机会。

InfoQ:当Schema最初发布的时候,有人认为core.typed和Schema的组合将非常强大。从那以后,您想过发展这一想法吗?

几年前,从我看到我的第一个Qi项目开始,我就一直因为Clojure的进阶类型而兴奋,而且我认为,Ambrose在促成这点方面做得非常棒。我们已经谈过,有若干方式可以使Schema与core.typed完美地结合,其中最有趣的可能是将Schema作为core.type-checked代码与未经检查的代码之间的桥梁。

那就是说,我很遗憾,我们还没有时间对core.typed做更深入地探究,所以,我现在没有更多的内容可谈了。

InfoQ:通过扩展实现测试数据生成听上去充满挑战,您会集成simple-check,利用test.generative,还是说Schema需要一种不同的方式?

我们还在考虑该问题。关于simple-check,我读过许多非常棒的东西,我认为这应该可行,但我们还在设法理解其实现,并弄清楚如何将额外的限制加入生成过程。此外,还可能是一个简单的生成器,用于伪随机地充实部分基准,这是我们最终在测试中经常用的东西。

InfoQ:关于从Schema定义中提取值,您有什么进一步的想法吗?

强制转换和转换极其强大,我想我们还在寻找所有因为它们而变得可行的应用。我的同事Dave Golland将在Clojure West大会上就新库“fnhouse”发表演说,该库将graph和schema结合在一起,简化了Web API构建。“coax”也会随之发布,该库会自动生成Objective C和ClojureScript模型类,以及从fnhouse API生成客户端API库。

之后,我们还有许多疯狂的想法,但我们还没有准备好谈论它们。

Graph是个Prismatics Clojure库,在2013年发布,用于以声明式样式表达结构化计算。

查看英文原文:Prismatic Adds Data Type Coercion to Schema 0.2

你可能感兴趣的:(Prismatic向Schema 0.2中添加了数据类型强制转换)