📜  如何在 clojure 中创建函数(1)

📅  最后修改于: 2023-12-03 15:08:35.285000             🧑  作者: Mango

如何在 Clojure 中创建函数

在 Clojure 中创建函数非常简单。Clojure 的函数定义语法类似于其它函数式编程语言,它有两个元素:参数列表和函数体。

创建一个简单的函数

我们来创建一个简单的函数,它接受一个参数并将其平方。

(defn square [x]
  (* x x))

这个函数定义了一个名为 square 的函数,它有一个参数 x。函数体是 (* x x),它将参数 x 平方并返回结果。要调用这个函数,您可以使用以下代码:

(square 5)
;; 输出: 25
使用多个参数创建函数

您可以在参数列表中包含多个参数来创建接受多个参数的函数。以下是一个将两个数字相加的函数的示例:

(defn add [x y]
  (+ x y))

这个函数定义了一个名为 add 的函数,它接受两个参数 xy。函数体是 (+ x y),它将这两个参数相加并返回结果。调用此函数的方法如下:

(add 2 3)
;; 输出: 5
定义可变数量的参数

有时您想定义函数,可以接受不定数量的参数。这种情况下,您可以在参数列表中使用 & 符号来定义可变数量的参数。下面是一个示例:

(defn sum [& nums]
  (apply + nums))

这个函数定义了一个名为 sum 的函数,它接受任意数量的参数。在函数参数列表中,& nums 表示 Clojure 在内部将这些参数打包成一个列表 numsapply 函数将 +nums 作为参数传递给函数,将列表中的所有数字相加。调用此函数的方法如下:

(sum 1 2 3 4)
;; 输出: 10
匿名函数

您还可以使用 fn 声明匿名函数。使用匿名函数时,您不需要为其分配名称,而是将其作为参数传递给其它函数。

以下是一个接受两个参数并返回它们的和的匿名函数的示例:

((fn [x y] (+ x y)) 2 3)
;; 输出: 5

请注意,上述代码确实包含三组括号。首先是最外层括号,它表示将函数作为参数传递给另一个函数。第二组括号是匿名函数的括号。第三组括号包含参数。

结论

在 Clojure 中创建函数很简单。通过参数列表和函数体定义函数,并使用它们来接受输入和返回输出。将参数打包成列表来接受可变数量的参数,而使用 fn 声明匿名函数。