2

这是两个请求相同参数并返回相同布尔类型值的函数。如:

 (defn Foo1 [x] (< x 3))
 (defn Foo2 [x] (> x -10))

但是当我定义下面的函数时我很困惑:

 (def Foo3 (or Foo1 Foo2))

你们能告诉我它是如何工作的吗?非常感谢你!

4

2 回答 2

1

(defn f [a] a)只是捷径(def f (fn [a] a))

如果def绑定的第二个参数是函数,那么第一个参数也是函数。

于 2013-03-29T12:32:15.637 回答
1

假设您正在尝试组合条件,您可能想要:

(defn foo3 [x] (or (foo1 x) (foo2 x)))

也就是说,您正在定义一个新函数foo3,其结果是对调用结果进行或运算的结果,foo1并且foo2具有相同的参数x

PS Clojure 中以小写字母命名函数是惯例。

于 2013-03-29T12:40:35.707 回答