📜  LISP 中的可选参数

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

LISP 中的可选参数

可选参数是函数中可选的函数。只要参数不是必需的,我们就可以放置可选参数。如果我们将可选参数保留在函数中并传递值,那么这些值将代替可选参数。如果未传递值,则可选参数将采用 NIL 并返回 NIL。如果我们想将可选参数作为实参,则将&optional放在可选参数的名称之前。

函数语法:

(defun function_name (parameter1,parameter2,.......,parameter n.... &optional )
other statements))
(call function value1,value2,.,value n, optional values)

示例: LISP 程序显示其所有传递的参数。

Lisp
;create a function named display
;pass the 2 parameters and optional as three parameters
(defun display (val1 val2 &optional op1 op2 op3) (write (list val1 val2 op1 op2 op3)))
 
;pass the all values
(display 10 20 30 40 50)
(terpri)
 
;pass only two values
(display 10 20 )
(terpri)
 
;pass only three values
(display 10 20 30)
(terpri)
 
;pass only four values
(display 10 20 30 40)
(terpri)


Lisp
;create a function named sum
;pass the 2 parameters and optional as three parameters
(defun sum (val1 val2 &optional op1 op2 op3) (write ( + val1 val2 op1 op2 op3)))
 
;pass the all values to get sum
(sum 10 20 30 40 50)
(terpri)


输出:

(10 20 30 40 50)
(10 20 NIL NIL NIL)
(10 20 30 NIL NIL)
(10 20 30 40 NIL)

示例 2:获取数字总和的 LISP 程序

语言

;create a function named sum
;pass the 2 parameters and optional as three parameters
(defun sum (val1 val2 &optional op1 op2 op3) (write ( + val1 val2 op1 op2 op3)))
 
;pass the all values to get sum
(sum 10 20 30 40 50)
(terpri)

输出:

150