Создание конструкторов записей, которые проверяют схему в Clojure

Здравствуйте, товарищи-клоурцы,

известно, что defreord от Clojure не учитывает подсказки типов, и в поля записи могут быть помещены данные любого типа. Я ищу способ ограничить поля записей в Clojure.

Я начал экспериментировать с defrecord Зов Призматической Схемы.

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

Сейчас звоню (->Item 1 2) просто возвращает новый Item Экземпляр несмотря на второй аргумент является число вместо строки. Я хочу, чтобы вызов конструктора вызвал какое-то исключение.

Я попробовал следующее, чтобы включить проверку на создание экземпляра записи без успеха.

  • добавление ^:always-validate метаданные для записи
  • призвание (sc/set-fn-validation! true)
  • призвание (sc/with-fn-validation (->Item 1 1))

Можно ли включить проверку схемы на вызовах конструктора без написания пользовательских конструкторов?

Спасибо за помощь.

0 ответов

Другие вопросы по тегам