LISP 中的返回值函数
在上一篇关于 LISP函数的文章中,我们已经看到了定义函数并通过传递一些参数来调用函数的语法。
从函数返回值:
在 LISP 中,函数体中的最后一个表达式成为该函数的返回值。
示例:让我们创建一个函数,该函数接受一个数字的输入参数并将其值加倍。
Lisp
(defun double-the-number (n)
( * n 2)
)
; Making function calls :
(write (double-the-number 5))
(terpri) ;Linebreak
(write (double-the-number 10))
(terpri)
(write (double-the-number 20))
(terpri)
Lisp
(defun double-the-number (n)
(if (> n 10)
(return-from double-the-number (* 2 10)))
( * n 2)
)
;; Calling the function
(write (double-the-number 5))
(terpri) ;Linebreak
(write (double-the-number 10))
(terpri)
(write (double-the-number 20))
(terpri)
在这个函数体中,我们的最后一个表达式是:
( * n 2)
因此,此函数将在调用时返回此表达式的值
输出 :
10
20
40
但有时我们可能需要中断条件语句或从函数中间返回值,在这种情况下使用RETURN-FROM特殊运算符。
使用 RETURN-FROM 的语法:
(return-from place value)
在这里,位置是我们必须从中返回特定值的代码块,例如,位置是当前函数的名称
示例:在上面的 LISP 代码中,我们设置一个条件,如果数字大于 10,则函数将通过将数字 10 加倍而不是原始数字加倍来返回值
语言
(defun double-the-number (n)
(if (> n 10)
(return-from double-the-number (* 2 10)))
( * n 2)
)
;; Calling the function
(write (double-the-number 5))
(terpri) ;Linebreak
(write (double-the-number 10))
(terpri)
(write (double-the-number 20))
(terpri)
在这里,您可以看到在第三个函数调用中我们传递了值 20,但由于我们的条件,它将使最大值(10)翻倍,因此在return-from运算符的帮助下,我们能够返回立即来自函数的值。
输出 :
10
20
20