首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clojure.spec符合抛出堆栈溢出异常

clojure.spec符合抛出堆栈溢出异常
EN

Stack Overflow用户
提问于 2017-05-09 11:01:54
回答 1查看 229关注 0票数 3

有人能解释一下,下面的例子有什么问题吗?为什么它会抛出StackOverflowError异常?

代码语言:javascript
复制
(s/def ::tag keyword?)
(s/def ::s string?)
(s/def ::n number?)
(s/def ::g
  (s/cat :tag (s/? ::tag)
         :ex (s/alt :string ::s
                   :number ::n
                   :and (s/+ ::g)
                   )))


(s/conform ::g '["abc"])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-09 11:58:32

类似于Alex在这个谷歌小组的讨论中所指出的,s/+试图在定义期间解析::g

这应该能做你想做的,我想:

代码语言:javascript
复制
(s/def ::g
       (s/spec (s/cat :tag (s/? ::tag)
                      :ex (s/alt :string ::s
                                 :number ::n
                                 :and ::g))))

; REPL
user=> (s/conform ::g [:foo [:bar "abc"]])
{:ex [:and {:ex [:string "abc"] :tag :bar}] :tag :foo}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43868064

复制
相关文章

相似问题

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