* (if (oddp 5) (progn (setf *xx* t) `ok) `allright)
OK
* (setf *xx* nil)
NIL
* *xx*
NIL
* (if (oddp 6) (progn (setf *xx* t) `ok) `allright)
ALLRIGHT
* *xx*
NIL
*
progn的目标是在某个语句前插入,如果这个语句得到了执行,那么插入的这个语句也会执行,并且先于这条语句执行
0[2] (if (oddp 5) (progn (setf *xx* 3) (setf *xx* (+ *xx* 2))) `allright)
5
0[2] (if (oddp 5) (progn (setf *xx* 3) (setf *xx* (+ *xx* 2))) `allright)
5
0[2] (if (oddp 5) (progn (setf *xx* 9) (setf *xx* (+ *xx* 2))) `allright)
11
0[2]
相关推荐
* `progn`语句用于实现多个语句的组合执行。 这些特性是AutoLISP编程语言的基本组成部分。 与AutoCAD集成 代码中还包括了与AutoCAD软件的集成,例如: * `acadmnlpath`变量用于存储AutoCAD的安装路径。 * `...
`(if ,test (progn ,@body))) ``` **五、模块与包系统** 包系统管理符号的命名空间,防止不同模块之间的符号冲突。`in-package` 宏用于切换当前包,`import` 和 `export` 分别用于引入和导出符号。 **六、函数式...
7. **错误处理与调试**:`error`函数用于抛出错误,`progn`和`catch/throw`可以实现异常处理。`print`和`debug`函数有助于在开发过程中调试代码。 8. **学习资源**:压缩包中的文件如"明经通道 AutoLISP函数.chm"和...
例如,`defun`用于定义函数,`if`和`cond`实现条件判断,`while`和`do`用于循环,`progn`用于组合多个语句,`vla-get`和`vla-set`操作AutoCAD的对象属性,这些都是编写高效AutoLISP程序的基础。 总之,AutoLISP函数...
7. **特殊形式**:Lisp有一些特殊形式,如` progn`用于执行一系列表达式,`quote`用于防止表达式的求值,以及`let`和`let*`用于局部变量绑定。 8. **迭代和循环**:Lisp提供多种循环结构,如`dotimes`用于基于次数...
- **控制结构**:如条件语句(`if`)、循环(`dotimes`、`dolist`)和过程(`progn`)。 3. **AutoLISP与AutoCAD的交互**: - **AutoCAD API**:AutoLISP可以通过AutoCAD的应用程序编程接口(API)访问AutoCAD的...
### Lisp函数参考大全中文版知识点概述 #### 一、基础运算与比较操作符 - **加法 (`+`)**:支持数字的加法运算。 - **减法 (`-`)**:支持数字的减法运算。 - **乘法 (`*`)**:支持数字的乘法运算。 - **除法 (`/`)*...
- 例如:`(defmacro when (test &rest body) `(if ,test (progn ,@body)))` 定义了一个类似于if-then的宏。 #### 9.5 Control Flow 控制流 - 包括条件语句、循环等控制结构。 - 例如:`(cond ((> x 0) "positive")...
9. **特殊形式**:如QUOTE、LAMBDA、PROGN等,它们在LISP中扮演着核心角色。 10. **环境与变量**:如SETF、GET、DEFVAR、DEFUN等,涉及变量的定义、赋值和获取。 11. **错误处理**:如CATCH和THROW,用于异常处理...
4. **内置函数和特殊形式**:例如`setq`用于赋值,`car`和`cdr`用于访问列表元素,`if`进行条件判断,`defun`定义函数,`progn`执行一系列语句。 5. **交互性**:AutoLISP允许用户在AutoCAD环境中直接运行和测试...
- **求值控制结构**:如`progn`、`eval`等。 #### 十、控制结构 - **条件语句**:如`if`、`cond`。 - **循环结构**:`while`、`dotimes`等。 - **错误处理**:如何捕获异常并进行处理。 #### 十一、变量 - **局部...
Lisp 是一种历史悠久的函数式编程语言,以其独特的列表结构和强大的元编程能力而著称。在 Lisp 中,所有的数据和代码都是由列表表示的。本篇文章中的代码使用了 Common Lisp 的语法。 ### 3. 函数定义 - **findj**...
4. `(progn expr1 expr2 ...)`:执行一系列表达式,并返回最后一个表达式的值。 5. `(setq *error-flag* t)` 和 `(catch tag body)`:用于异常处理,当发生错误时,`*error-flag*`被设置为`t`,并可以通过`catch`...
(progn (setq tlbver (substr (vl-filename-base tlbfile) 6)) (cond ((= tlbver "9") (princ "\n 初始化 Microsoft Excel 2000...") ) ((= tlbver "8") (princ "\n 初始化 Microsoft Excel 97...") ) ((=...
5. 错误处理和调试:确保程序在遇到意外情况时能正确处理,使用`(error)`、`(progn)`等构造。 在学习和使用CLK.LSP之前,你需要熟悉AutoLISP编程环境,安装并配置AutoCAD,理解AutoCAD的基本操作和命令,以及LISP...
使用`(error "错误信息")` 抛出错误,`(progn …)` 用于无错误块,`(catch tag body)` 和 `(throw tag value)` 实现异常处理。 9. **程序组织** 大型的AutoLISP项目通常会使用多个文件组织,利用`load` 或 `...
(progn (setq tangent-point (intersection-circle-circle c1-center c1-radius c2-center c2-radius)) ; 计算切点 (setq tangent-line (tangent-line-at-point c1-center c1-radius tangent-point)) ; 计算切线...
*.*.* 序列:序列在LISP中用于表示一系列的操作,可能涉及到begin或progn等构造。 *. *.*.* 赋值:赋值操作允许变量被赋予新的值,是LISP程序中常见的操作。 *. *.*.* 抽象:抽象在LISP中通常通过定义函数实现,...
` progn` 用于执行一系列表达式,`let` 和 `let*` 用于局部变量绑定。 5. **宏系统**:Common Lisp 的宏系统是其独特之处,允许程序员在编译时编写代码生成器。`defmacro` 用于定义宏,通过宏展开,可以在运行前...