首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在clojure.spec中提供默认值

在clojure.spec中提供默认值
EN

Stack Overflow用户
提问于 2016-08-03 23:38:29
回答 2查看 541关注 0票数 4

有没有办法为(s/keys :opt [::k1 ::k2])中提到的键指定默认值

类似于:

代码语言:javascript
复制
(s/keys :opt [(with-default ::k1 "default1") (with-default ::k2 "default2")])

或者在clojure.spec之外处理缺省值更惯用?

EN

回答 2

Stack Overflow用户

发布于 2016-08-04 05:39:02

我不这么认为,因为clojure.spec主要关注数据验证和结构,而不是丰富、强制或更改数据。所以你必须自己去做。例如:

代码语言:javascript
复制
(merge {::k1 "default" ::k2 "default"} {::k1 2}) ;;=> {::k1 2, ::k2 "default"}

或者使用关联解构:

代码语言:javascript
复制
(let [{k1 ::k1 k2 ::k2 :or {k1 "default", k2 "default"}} 
      {::k1 2}] 
  [k1 k2]) ;; => [2 "default"]

或者类似的:

代码语言:javascript
复制
(let [{:keys [::k1 ::k2] :or {k1 "default" k2 "default"}} 
      {::k1 2}] 
  [k1 k2]) ;; => [2 "default"]
票数 3
EN

Stack Overflow用户

发布于 2017-01-16 23:32:11

在规范中没有明确的特性,我希望你在代码中处理它,而不是在规范中。

可以用s/conformer构建一些可以做到这一点的东西,但我不认为这是该功能的推荐用法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38748074

复制
相关文章

相似问题

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