创建在Clojure中检查模式的记录构造函数

时间:2017-10-06 15:45:44

标签: validation clojure plumatic-schema

你好Clojurians,

众所周知,Clojure的defrecord不尊重类型提示,任何类型的数据都可以放在记录字段中。我正在寻找一种方法来限制Clojure中的记录字段。

我开始尝试Prismatic Schemadefrecord调用。

(require '[schema.core :as sc])
(sc/defrecord Item [size :- Long, colour  :- String])

现在调用(->Item 1 2)只返回一个新的Item实例,尽管第二个参数是数字而不是字符串。我希望构造函数调用抛出一些异常。

我已尝试以下方法在记录实例化时打开验证但没有成功。

  • ^:always-validate元数据添加到defrecord
  • 致电(sc/set-fn-validation! true)
  • 致电(sc/with-fn-validation (->Item 1 1))

是否可以在不编写自定义构造函数的情况下打开构造函数调用的模式验证?

感谢您的帮助。

0 个答案:

没有答案