1 Nyquist插件基础:LISP语法-自定义函数
在 Nyquist 里,自定义函数能够让你把特定的操作封装起来,实现代码复用和逻辑模块化。下面详细介绍如何在 Nyquist 中定义和使用自定义函数。
1.1.1 1. 基本函数定义
在 Nyquist 中使用 defun
来定义函数,其基本语法如下:
lisp
(defun function-name (parameter1 parameter2 ...)
"可选的文档字符串,用于描述函数的功能"
body-forms)
function-name
:函数的名称,用于后续调用函数。(parameter1 parameter2 ...)
:参数列表,参数之间用空格分隔,可根据需要定义零个或多个参数。"可选的文档字符串"
:对函数功能的描述,为可选部分。body-forms
:函数体,包含函数要执行的代码。
1.1.1.1 示例:简单的加法函数
lisp
(defun add-two-numbers (a b)
"计算两个数的和"
(+ a b))
调用这个函数:
lisp
(add-two-numbers 3 5) ; 返回 8
1.1.2 2. 带默认参数的函数
你可以为函数参数设置默认值,当调用函数时若未提供该参数的值,就会使用默认值。在参数列表中使用 &optional
来指定可选参数及其默认值。
lisp
(defun greet (name &optional (greeting "Hello"))
"向指定的人发送问候语"
(format t "~a, ~a!~%" greeting name))
调用示例:
lisp
(greet "John") ; 输出 "Hello, John!"
(greet "Jane" "Hi") ; 输出 "Hi, Jane!"
1.1.3 3. 可变参数函数
若函数需要接受不定数量的参数,可使用 &rest
来定义可变参数,这些参数会被收集到一个列表中。
lisp
(defun sum-all-numbers (&rest numbers)
"计算所有传入数字的和"
(apply #'+ numbers))
调用示例:
lisp
(sum-all-numbers 1 2 3 4) ; 返回 10
1.1.4 4. 递归函数
递归函数是指函数调用自身的函数,常用于解决可分解为相同子问题的任务。
lisp
(defun factorial (n)
"计算一个数的阶乘"
(if (<= n 1)
1
(* n (factorial (- n 1)))))
调用示例:
lisp
(factorial 5) ; 返回 120
1.1.5 5. 嵌套函数
在函数内部可以定义其他函数,即嵌套函数,嵌套函数可以访问外部函数的局部变量。
lisp
(defun outer-function (x)
"外层函数,包含一个嵌套函数"
(defun inner-function (y)
(+ x y))
(inner-function 5))
调用示例:
lisp
(outer-function 3) ; 返回 8
通过上述方法,你能在 Nyquist 中创建出满足不同需求的自定义函数。
作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动) (注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.