写点什么

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

  • 2014-02-25
  • 本文字数:1158 字

    阅读完需:约 4 分钟

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

2014-02-25 20:071188
用户头像

发布了 256 篇内容, 共 95.9 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第二期 Week 3 作业

bigxiang

极客大学架构师训练营

第七周命题作业

orchid9

异步并发分布式编程框架Akka

天天向上

极客大学架构师训练营

极客时间架构 1 期:第 7 周 性能优化(一) - 命题作业

Null

架构师训练营 1 期第 7 周:性能优化(一)- 作业

灵霄

极客大学架构师训练营

Newbe.ObjectVisitor 0.2.10 发布,更花里胡哨

newbe36524

C# dotnet

架构师训练营第七周作业

郎哲158

极客大学架构师训练营

架构师训练营-单例模式

AI会取代人类劳动吗?

脑极体

架构师训练营第 1 期 week7

张建亮

极客大学架构师训练营

Architecture Phase1 Week7:HomeWork

phylony-lu

极客大学架构师训练营

极客时间架构 1 期:第7周 性能优化(一) - 学习总结

Null

架构师训练营week07总结

FG佳

第七周总结

睁眼看世界

极客大学架构师训练营

「架构师训练营第 1 期」第七周作业

张国荣

架构师训练营—第七周学习总结

orchid9

第三周设计模式总结

leo

极客大学架构师训练营

寻找性能更优秀的动态 Getter 和 Setter 方案

newbe36524

C# dotnet

架构师训练营 2 期 - 第三周总结

Geek_no_one

极客大学架构师训练营

架构师训练营第三周总结

张浩

架构师训练营第三周作业-手写单例模式

张浩

训练营第七周作业 1

仲夏

极客大学架构师训练营

寻找性能更优秀的不可变小字典

newbe36524

C# dotnet

架构师训练营 2 期 - 第 3 周命题作业

Geek_no_one

极客大学架构师训练营

架构师训练营week07作业

FG佳

极客大学架构师训练营 week07

Newbe.ObjectVisitor 样例 1

newbe36524

C# dotnet

Fedora32安装MySQL8

ilovealt

MySQL Linux

性能压测

橘子皮嚼着不脆

Netty源码解析 -- PoolSubpage实现原理

binecy

Netty 内存管理 源码阅读

架构师训练营第七周总结

月殇

极客大学架构师训练营

你不好奇 CPU 是如何执行任务的吗?

小林coding

Linux cpu 操作系统 计算机基础

Prismatic向Schema 0.2中添加了数据类型强制转换_后端_Tom Coupland_InfoQ精选文章