gpt4 book ai didi

clojure - Clojure 中的多态模式验证

转载 作者:行者123 更新时间:2023-12-04 00:56:13 24 4
gpt4 key购买 nike

我想使用架构来验证请求对象。映射中的值之一确定哪些其他字段有效。

例如,这些都是有效的:

{ :name "jane" :type :dog :barking true }
{ :name "alan" :type :bird :cheeping true }
{ :name "bert" :type :fish :swimming true }

有些字段是通用的。但其他人取决于 :type 的值.

例如,这将是无效的:
{ :name "phil" :type :bird :barking false }

如何表达这样的模式?

我很高兴使用 clj-schema 或 Prismatic 模式。

最佳答案

您可以使用prismatic.schema 的 conditional 实现这一点:

(s/conditional #(= (:type %) :bird) {:type (s/eq :bird) :chirping s/Bool}
#(= (:type %) :fish) {:type (s/eq :fish) :swimming s/Bool}
...
:default {:type (s/eq :animal) :existing s/Bool})

关于clojure - Clojure 中的多态模式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23917495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com