Clojure 可以从Plumatic模式生成谓词函数吗?
我想创建一个谓词函数,当与模式X匹配时,该函数返回true,否则返回false。也许不是最漂亮的解决方案,但我们可以使用模式Clojure 可以从Plumatic模式生成谓词函数吗?,clojure,plumatic-schema,Clojure,Plumatic Schema,我想创建一个谓词函数,当与模式X匹配时,该函数返回true,否则返回false。也许不是最漂亮的解决方案,但我们可以使用模式验证并捕获它在失败时引发的异常 (schema/defschema string-vector [schema/Str]) (defn str-vec? [arg] (try (schema/validate string-vector arg) true (catch clojure.lang.ExceptionInfo e
验证
并捕获它在失败时引发的异常
(schema/defschema string-vector
[schema/Str])
(defn str-vec? [arg]
(try (schema/validate string-vector arg)
true
(catch clojure.lang.ExceptionInfo e
false)))
(str-vec? ["hi"]) ; => true
(str-vec? ["hi" 5]) ; => false
希望其他人能提供更好的解决方案。也许不是最漂亮的解决方案,但我们可以使用模式
validate
并捕获它在失败时引发的异常
(schema/defschema string-vector
[schema/Str])
(defn str-vec? [arg]
(try (schema/validate string-vector arg)
true
(catch clojure.lang.ExceptionInfo e
false)))
(str-vec? ["hi"]) ; => true
(str-vec? ["hi" 5]) ; => false
希望其他人能提供更好的解决方案。您可以使用类似于但直接将错误作为值返回的方法,而不是在未发现错误时引发异常或nil
:
(schema/defschema string-vector
[schema/Str])
(defn str-vec? [arg]
(nil? (schema/check string-vector arg)))
(str-vec? ["hi"]) ; => true
(str-vec? ["hi" 5]) ; => false
还有schema/checker
“为schema编译一个高效的检查器”:
当未发现错误时,您可以使用类似于但直接返回错误的值,而不是引发异常或nil
:
(schema/defschema string-vector
[schema/Str])
(defn str-vec? [arg]
(nil? (schema/check string-vector arg)))
(str-vec? ["hi"]) ; => true
(str-vec? ["hi" 5]) ; => false
还有schema/checker
“为schema编译一个高效的检查器”: