или же

чаю Clojure и наслаждаюсь им, но нахожу несогласованность в записях, которая озадачивает меня: почему конструктор карты по умолчанию (карта-> что угодно) не проверяет целостность данных при создании новой записи? Например:

user=> (defrecord Person [first-name last-name])
#<Class@46ffda99 user.Person>
user=> (map->Person {:first-name "Rich" :last-name "Hickey"})
#user.Person {:first-name "Rich" :last-name "Hickey"}
user=> (map->Person {:first-game "Rich" :last-name "Hickey"})
#user.Person {:first-game "Rich" :first-name nil :last-name "Hickey"}

Я считаю, что карта не обязательна для определения всех полей в определении записи, и также разрешено содержать дополнительные поля, которые не являются частью определения записи. Также я понимаю, что могу определить свой собственный конструктор, который обернет конструктор по умолчанию, и я думаю, что:post Затем условие можно использовать для проверки правильности (и всестороннего) создания записи (не удалось заставить это работать).

Мой вопрос: существует ли идиоматический способ Clojure для проверки данных во время создания записи с карты? И есть ли что-то, чего мне здесь не хватает в Records?

Спасибо.

Ответы на вопрос(0)

Ваш ответ на вопрос