首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用clj模式在Clojure中使用松散模式

使用clj模式在Clojure中使用松散模式
EN

Stack Overflow用户
提问于 2014-03-12 17:54:25
回答 1查看 202关注 0票数 0

我想要创建一个我认为是松散的模式来验证Clojure映射的内容。

clj-schema示例使我相信,我只需要将:loose指定为def-map-schema的第一个参数。然而,这似乎行不通。

考虑以下测试(使用midje):

代码语言:javascript
复制
(def-map-schema loose-schema :loose [[:id] Number])

(fact (empty? (validation-errors loose-schema {:id 1})) => true)            ; OK
(fact (empty? (validation-errors loose-schema {:id "string"})) => false)    ; OK
(fact (empty? (validation-errors loose-schema {:id 1 :foo "bar"})) => true) ; NO!

第三项测试产生:

“路径:foo未在架构中指定。”

如何使模式忽略无关的映射项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-12 17:58:52

我把争论绕错了方向。

def-map-schema返回的模式实际上并不松散:

代码语言:javascript
复制
(loose-schema? loose-schema)
=> false

而不是:

代码语言:javascript
复制
(def-map-schema loose-schema :loose [[:id] Number])

正确的表格是:

代码语言:javascript
复制
(def-map-schema :loose loose-schema [[:id] Number])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22359892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档