是否有线程化的方式在Clojure中执行“或”(或任何测试)条件?

mar*_*hon 3 clojure

类似于以下内容:

(or->
    "foobar"
    (clojure.string/starts-with? "foo")
    (clojure.string/starts-with? "bar"))

=> true
Run Code Online (Sandbox Code Playgroud)

如果不是,用多个or / and进行测试的惯用方式是什么?

Car*_*ate 9

我会some在这里使用。本质上,这是一个顺序友好的or检查,可以在所有条件基本相同时帮助减少重复:

(some #(clojure.string/starts-with? "foobar" %)
      ["foo" "bar"])
Run Code Online (Sandbox Code Playgroud)

它使用早期回报。


and当量some将是every?

(every? odd? [3 5 9])
=> true
Run Code Online (Sandbox Code Playgroud)