lisp语言cond和if套用_LISP - 决策
决策结构需要程序员指定一个或多个条件由程序进行评估或测试,以及要执行的语句或语句如果条件被确定为true,如果条件被确定为false那么选择要执行其他语句。
下面是在大多数编程语言中一个典型的决策结构的一般形式为:
LISP提供了以下类型的决策构造。点击以下链接,查看其详细信息。
Construct
描述
cond
这个结构是用于用于检查多个测试行动作条件。它可以嵌套if或其他编程语言语句。
if
if结构有多种形式。在最简单的形式,它后面跟着一个测试条,测试操作和一些其它相应措施(次)。如果测试子句的值为true,那么测试的动作被执行,否则,由此产生的子句求值。
when
在最简单的形式,它后面跟着一个测试条和测试操作。如果测试子句的值为true,那么测试的动作被执行,否则,由此产生的子句求值。
case
这种结构实现了像cond 构造多个测试行动语句。但是,它会评估的关键形式,并允许根据该键的形式评价多个行动语句。
LISP的cond特殊构造
在LISP语言中cond结构是最常用的,以允许分支。
cond的语法是:
(cond(test1action1)(test2action2)...(testnactionn))
在cond 语句中每个子句包含一个条件测试,并要执行的动作。
如果第一次测试下面的芯线,为test1,被评估为true,那么相关的行动的一部分, action1执行,返回它的值,及本子句的其余部分被跳过。
如果test1的计算结果是nil,然后控制移动到第二个子句,而不执行action1,和相同的流程进行后续处理。
如果没有试验条件计算结果为真,那么cond语句返回nil。
示例
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(setq a10)(cond((>a20)(format t"~% a is less than 20"))(t(format t"~% value of a is ~d "a)))
当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:
value of ais10
请注意,第二个子句中t保证的是,如果没有其他的将最后完成的动作。
if结构
如果该宏后跟一个测试子句计算为 t 或nil。如果测试子句计算到t,然后按照测试子句的动作被执行。如果它是零,那么下一个子句进行评估计算。
if的语法:
(if (test-clause) (
示例1
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(setq a10)(if(>a20)(format t"~% a is less than 20"))(format t"~% value of a is ~d "a)
当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:
value of ais10
示例2
if子句后面可以跟一个可选的then子句:
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(setq a10)(if(>a20)then(format t"~% a is less than 20"))(format t"~% value of a is ~d "a)
当您单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:
aisless than20value of ais10
示例 3
还可以创建使用if子句的if-then-else类型声明。
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(setq a100)(if(>a20)(format t"~% a is greater than 20")(format t"~% a is less than 20"))(format t"~% value of a is ~d "a)
当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:
aisgreater than20value of ais100
when构造,
该when宏,后面跟着一个测试子句计算为t或为零。如果测试条被评估计算为nil,则任何形式的评估及nil返回,但是它的测试结果为t,则下面的测试条的动作被执行。
when宏的语法:
(when (test-clause) (
示例
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(setq a100)(when(>a20)(format t"~% a is greater than 20"))(format t"~% value of a is ~d "a)
当您单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:
aisgreater than20value of ais100
case构造
case结构实现像cond结构多个测试动作语句。但是,它会评估的键形式,并允许根据该键的形式评价多个动作语句。
该case宏的语法是:
The template for CASE is:
(case(keyform)((key1)(action1action2...))((key2)(action1action2...))...((keyn)(action1action2...)))
示例
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(setq day4)(caseday(1(format t"~% Monday"))(2(format t"~% Tuesday"))(3(format t"~% Wednesday"))(4(format t"~% Thursday"))(5(format t"~% Friday"))(6(format t"~% Saturday"))(7(format t"~% Sunday")))
当您单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:
Thursday
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
lisp语言cond和if套用_LISP - 决策相关推荐
- lisp语言cond和if套用_LISP语言入门(CLISP)
曾经翻译整理的一篇LISP语言的入门文章,与大家分享. (请勿转载) ---------------------------------------------------------------- ...
- lisp语言cond和if套用_lisp语言入门
Lisp 语言入门 Lisp 是一门历史悠久的语言,全名叫 LISt Processor ,也就是"表处理语言",它是由 John McCarthy 于 1958 年就开始设计的一 ...
- lisp语言cond和if套用_方案 – if和cond之间的区别?
but when running, cause error: procedure application: expected > procedure, given: #; arguments w ...
- lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond
(defun c:test() (initget "A0 A1 A2 A3 A4") (setq size (getkword "请输入图纸大小A0,A1,A2,A3,A ...
- lisp语言cond和if套用_在'if'语句中设置多行条件的样式?
Harley Holco.. 679 您不需要在第二个条件行上使用4个空格.也许用: if (cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val ...
- lisp绘制法兰_lisp语言画键槽_用LISP语言自定义AutoCAD命令
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用LISP语言自定义AutoCAD命令 AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能.运行速度和保密性等方面比起ARX等工具要逊色一些 ...
- lisp语言画键槽_lisp语言画键槽_用LISP语言自定义AutoCAD命令
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用LISP语言自定义AutoCAD命令 AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能.运行速度和保密性等方面比起ARX等工具要逊色一些 ...
- lisp语言是最好的语言_Lisp可能不是数据科学的最佳语言,但是我们仍然可以从中学到什么呢?...
lisp语言是最好的语言 This article is in response to Emmet Boudreau's article 'Should We be Using Lisp for Da ...
- lisp语言画地物符号_LISP语言在CAD工程制图中的应用_谢威
科技信息 一 . 引言 LISP ( List Processor ) 程序语言是由 Autodesk 公司开发的一种程序 语言 . AutoCAD 软件包中包含大多数用于产生图形 . 处理图形的命令 ...
最新文章
- (循环练习题) 五只猴子分桃子
- Springboot 启动问题
- Typescript 基本类型
- golang备份和恢复
- 【mysql技巧】按某一字段分组取最大(小)值所在行的数据
- 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象
- NuGet镜像上线试运行
- 【LeetCode】剑指 Offer 24. 反转链表
- [ZJOI2008]骑士
- 2月28日 PCA降维,SVD压缩,中心化、归一化、标准化、k-l变换
- Asp.Net Core 第03局:Startup
- mysql中的group by分组
- Python大数据分析(一):认识大数据
- 日语词频分析——mecab使用
- 让Excel 只显示有限行和列
- 取绝对值,保留两位小数
- 高速电路中菊花链、fly-by与T点拓扑
- 频繁默认网关不可用_老是默认网关不可用,默认网关不可用总掉线解决方法
- bugku-加密-题解
- 高德地图交通态势爬取
热门文章
- 伤钱伤感情 10件不能和亲戚一起干的事儿
- 爱恨交织的编程语言 是什么吸引了你
- 块编码、对象编码、小波编码、分布式编码【转贴】
- 解决:The ‘Access-Control-Allow-Origin‘ header contains multiple values‘x, *‘, but only one is allowed.
- 解决 dockerfile 构建镜像报错: [WARNING]: Empty continuation lines will become errors in a future release.
- FreeSql (二十)多表查询 WhereCascade
- POWERSPLOIT-Recon(信息侦察)脚本渗透实战
- 新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理
- WPF中Grid实现网格,表格样式通用类(转)
- 学习ecshop 教程网址