【发布时间】:2017-12-15 23:29:18
【问题描述】:
我对 Clojure Spec 感到非常困惑。当我通过输入在 repl 中运行时:
(require '[clojure.spec.alpha :as s])
然后加上:
(s/valid? even? 10)
我得到 //true。当我跑步时:
(s/valid? even? 11)
//错误。好的,这样就可以了。然后,当我在 core.clj 中需要规范时:
(ns spam-problem.core
(:require [clojure.spec.alpha :as s]
[clojure.spec.gen.alpha :as gen]))
并尝试一个简单的验证让它抛出一个错误,没有任何反应:
(defn -main
"I don't do a whole lot ... yet."
[& args]
(s/valid? even? 11))
我不知道我在这里做错了什么,并且对规范应该如何工作感到非常困惑。我正在使用命令 lein run 来运行它。是否有其他方式运行它?
【问题讨论】:
-
valid不会抛出。它返回一个布尔值,你没有做任何事情。 -
好的,但也不适用于conform。我应该在我的示例中使用它。
-
Conform 也不会抛出。您可能想改用 s/assert。
标签: clojure clojure.spec