📜  LISP 中的函数

📅  最后修改于: 2022-05-13 01:55:52.001000             🧑  作者: Mango

LISP 中的函数

函数是一组语句,它们接受一些输入、执行一些任务并产生结果。通过函数,我们可以将一个巨大的任务拆分成许多更小的函数。它们还有助于避免代码重复,因为我们可以为不同的输入调用相同的函数。

在 LISP 中定义函数:

LISP 中的函数是使用DEFUN宏定义的。基本语法如下所示:

(defun function-name (parameters)
  "Documentation string"
  body-of-function
)
  • 函数名:您可以使用任何类型的符号作为函数名,但通常函数名只包含字符和连字符。在 LISP 中,而不是在命名中使用下划线,连字符被视为命名约定。例如,我们写calc-average而不是calc_averagecalcAverage
  • 参数:这些是用于保留调用时传递给函数的参数的变量。这些参数是可选的,如果函数没有任何参数,则该列表为空,写为 ( )
  • 文档字符串:它是一个字符串字面量,用于描述特定函数的意图。
  • 函数体函数体由 LISP 表达式组成,在调用函数时按顺序计算这些表达式。通常,最后一个表达式的值作为函数的值返回,但是通过特殊运算符RETURN-FORM的帮助,我们可以从函数的任何位置返回函数的值。

例子:

1. 让我们创建一个名为hello-world的函数,它不接受任何参数并返回一个 hello world字符串。

Lisp
(defun hello-world () 
  (format t "Hello, World!")
)
(hello-world)


Lisp
(defun add-two-number (n1 n2)
  "Adds two numbers"
  (+ n1 n2)
)
(write(add-two-number 10 20))


Lisp
(defun welcome-to-gfg (&optional (name "Sandeep"))
  (format t "Welcome ~S to Geeks for geeks!" name)
)
(welcome-to-gfg)
(terpri)
(welcome-to-gfg "UserName")


输出:



Hello, World!

2. 两个整数相加的函数

这里我们创建了一个名为add-two-number的函数,它接受两个参数n1n2 。文档字符串用于描述此函数所做的工作,并且通过调用+返回的任何值最终都会成为 add-two-number 的返回值。

Lisp

(defun add-two-number (n1 n2)
  "Adds two numbers"
  (+ n1 n2)
)
(write(add-two-number 10 20))

输出:

30

3. 现在让我们创建一个简单的函数,它接受一个可选字符串参数并返回欢迎字符串:

在函数welcome-to-gfg中,我们有一个可选参数名称。要定义任何可选参数,请在可选参数的名称前添加符号: & optional。
我们已将其默认值设置为Sandeep ,因此如果用户调用welcome-to-gfg 没有任何参数的函数会打印“Welcome “Sandeep” to Geeks for geeks!”或者如果在调用函数时传递了任何参数,它将返回包含调用函数时传递的参数值的字符串。
(terpri)用于打印新行

Lisp

(defun welcome-to-gfg (&optional (name "Sandeep"))
  (format t "Welcome ~S to Geeks for geeks!" name)
)
(welcome-to-gfg)
(terpri)
(welcome-to-gfg "UserName")

输出:

Welcome "Sandeep" to Geeks for geeks!
Welcome "UserName" to Geeks for geeks!