当前位置: 首页 > news >正文

齐齐哈尔网站开发百度指数网页版

齐齐哈尔网站开发,百度指数网页版,打开网址跳转到国外网站,网站后台添加关键词1 Nyquist插件基础:LISP语法-变量及赋值 在LISP中,变量的定义和赋值是编程的基础操作,下面将为你详细介绍Common LISP中变量定义和赋值的相关知识。 变量类型   在LISP里,变量主要分为两类:全局变量和局部变量。 …

1 Nyquist插件基础:LISP语法-变量及赋值

在LISP中,变量的定义和赋值是编程的基础操作,下面将为你详细介绍Common LISP中变量定义和赋值的相关知识。

  • 变量类型
      在LISP里,变量主要分为两类:全局变量局部变量

1.1 全局变量的定义与赋值

全局变量在整个程序中都可以被访问。在Common LISP中,全局变量通常用两个星号 * 来标记。

1.1.1 定义和赋值全局变量

使用 defvar 或者 defparameter 来定义和赋值全局变量。

  • defvar:如果变量未定义,defvar 会对其进行定义并赋值;若变量已存在,则不会重新赋值。
(defvar *my-global-variable* 10)
(format t "The value of *my-global-variable* is: ~A~%" *my-global-variable*)

在上述代码中,定义了一个全局变量 *my-global-variable*,并将其初始值设为 10,随后将其值输出。

  • defparameter:无论变量是否已经定义,defparameter 都会重新对其赋值。
(defparameter *another-global-variable* 20)
(format t "The value of *another-global-variable* is: ~A~%" *another-global-variable*)

这里定义了另一个全局变量 *another-global-variable*,并将其初始值设为 20,最后输出其值。

1.2 局部变量的定义与赋值

局部变量仅在特定的代码块中有效。在Common LISP中,一般使用 letlet*fletlabels 来定义局部变量。

1.2.1 使用 let 定义局部变量

let 可以同时定义多个局部变量,并且这些变量的初始值可以相互独立。

(let ((x 5) (y 10))(format t "The value of x is: ~A, and the value of y is: ~A~%" x y)(+ x y))

上述代码中,let 创建了两个局部变量 xy,分别赋值为 5 和 10,然后输出它们的值,最后返回它们的和。

1.2.2 使用 let* 定义局部变量

let*let 类似,但 let* 允许后面定义的变量使用前面已经定义好的变量的值。

(let* ((a 3) (b (+ a 2)))(format t "The value of a is: ~A, and the value of b is: ~A~%" a b))

在这段代码里,let* 先定义了变量 a 并赋值为 3,接着定义变量 b,其值为 a + 2,最后输出这两个变量的值。

1.2.3 使用 fletlabels 定义局部函数变量

fletlabels 用于定义局部函数变量。flet 定义的函数不能相互递归调用,而 labels 定义的函数可以。

  • flet 示例
(flet ((square (n) (* n n)))(format t "The square of 4 is: ~A~%" (square 4)))

这里使用 flet 定义了一个局部函数 square,用于计算一个数的平方,然后调用该函数计算 4 的平方并输出结果。

  • labels 示例
(labels ((factorial (n)(if (zerop n)1(* n (factorial (- n 1))))))(format t "The factorial of 5 is: ~A~%" (factorial 5)))

此代码使用 labels 定义了一个递归函数 factorial 来计算阶乘,接着计算 5 的阶乘并输出结果。

1.3 变量的重新赋值

在LISP中,可以使用 setq 来对变量重新赋值。

(defvar *test-variable* 100)
(format t "The original value of *test-variable* is: ~A~%" *test-variable*)
(setq *test-variable* 200)
(format t "The new value of *test-variable* is: ~A~%" *test-variable*)

上述代码先定义了一个全局变量 *test-variable* 并赋值为 100,然后使用 setq 将其值重新赋为 200,最后分别输出变量的初始值和新值。

1.4 总结

  • 定义全局变量: defvar, defparameter
  • 定义局部变量:let, let*(变量赋值重用)
  • 变量赋值:setq
  • 局部函数:fletlabels(可递归)!
🕮说明
  LISP的数学计算能力是真猛!! 递归函数阶乘算到2万都能秒出结果,而一般的脚本语言(如:AWK),阶乘到170就是极限了!

作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

http://www.cadmedia.cn/news/2780.html

相关文章:

  • 网站建设用的工具sem营销是什么意思
  • 现在外国有哪个网站可以做卖东西网站为什么要seo?
  • 闸北区网站建设网页制google登录入口
  • 专门查大学的网站hyein seo官网
  • 江西专业南昌网站建设百度推广上班怎么样
  • 济南网站建设开发公司哪家好杭州网络推广外包
  • 马蹄网广州seo黑帽培训
  • 地方性小网站的建设可以入侵的网站
  • 家乡政府网站建设评价怎么写广告精准推广平台
  • qq手机版扬州seo推广
  • 建网站公司都是怎么建设网站的制作网页的流程
  • 西安seo整站优化微博推广价格表
  • 个人网站设计实验原理网站快速有排名
  • 适合大型网站的流量套餐朋友圈产品推广文案
  • 济铁工程建设集团公司官方网站三只松鼠软文范例500字
  • web应用系统设计淘宝seo搜索排名优化
  • 天津建设电工证查询网站it培训机构出来能找到工作吗
  • 石嘴山北京网站建设化妆培训
  • 做ppt的免费软件武汉网站seo推广公司
  • 聊城网站建设lckjxxsteam交易链接在哪复制
  • 株洲做网站建设移动网站如何优化排名
  • 宁波专业的网站建设西安网络推广营销公司
  • 高校招生网站建设如何搜索关键词热度
  • 沈阳做网站最好的公司有哪些嘉兴百度快照优化排名
  • 网站可以做多少事情seo上首页
  • 平面设计最新招聘信息太原百度快速优化排名
  • 云南省建设厅招标办网站站外推广怎么做
  • 中国最大网站建设商阿里云免费域名
  • 三亚人才招聘网站百度高级搜索入口
  • 做网站是自己公司做好还是外包好免费建站系统官网