你好Clojurians,
众所周知,Clojure的defrecord不尊重类型提示,任何类型的数据都可以放在记录字段中。我正在寻找一种方法来限制Clojure中的记录字段。
我开始尝试Prismatic Schema的defrecord
调用。
(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))
是否可以在不编写自定义构造函数的情况下打开构造函数调用的模式验证?
感谢您的帮助。