ELisp编程九:循环
来源:互联网 发布:网络大电影市场收益 编辑:程序博客网 时间:2024/06/10 12:00
while函数原型
(while TEST BODY...)
比如:
(setq i 0)(while (< i 10) (message "i = %d" i) (incf i))
i = 0i = 1i = 2i = 3i = 4i = 5i = 6i = 7i = 8i = 9
(incf i) 每次对i加1
遍历list
下面的这个例子的代码演示了如何遍历list中的每个元素,并打印:
(setq animals '(gazelle giraffe lion tiger))(defun print-elements-of-list (list) "Print each element of LIST on a line of its own." (while list (print (car list)) (setq list (cdr list))))(print-elements-of-list animals)
car函数返回list中的第一个元素
cdr函数将list中第二个元素开始的元素作为一个新的list返回
中断循环
如果我们要实现常见的break跳出循环,比如像下面的JavaScript代码:
var x = total = 0;while (true) { total += x; if (x++ > 10) { break; }}
eLisp中应该这样写:
(setq x 0 total 0)(catch 'break (while t (incf total x) (if (> (incf x) 10) (throw 'break total))))
catch函数获取到里面throw函数返回的total,当然也可不必返回有效值,用nil即可。
(throw 'break nil)
跳过本次循环
用throw/catch 实现continue
(setq x 0 total 0)(while (< x 100) (catch 'continue (incf x) (if (zerop (% x 5)) (throw 'continue nil)) (incf total x)))
- ELisp编程九:循环
- Elisp 编程
- ELisp编程四:文件操作
- ELisp编程六:定义变量
- ELisp编程七:创建函数
- ELisp编程八:条件语句
- ELisp编程十:求最大值
- ELisp编程十三:宏一
- ELisp编程十三:宏二
- ELisp编程十四:宏三
- ELisp编程一:运行elisp的各种方式
- ELisp编程一:运行elisp的各种方式
- ELisp编程二:Atom,Symbol,空格,注释
- ELisp编程五:解析器相关
- ELisp编程十一:正则表达式一
- ELisp编程十二:正则表达式二
- ELisp编程三:理解错误信息与查看帮助
- elisp 基础
- 程序流程控制总结
- Linux 系统错误码及其说明
- 【JDBC单例】和【C3P0连接池基本用法】的对比
- XXX is not in the sudoers file解决
- SSH远程会话管理工具 - screen使用教程
- ELisp编程九:循环
- linux内核介绍之开机启动过程
- iPhone开发self的用法
- hdu1069
- Android layer type与WebView白屏以及WebView不随动画而动的问题
- VC6.0工程转到VS2008一些问题的描述及解决方法
- 拓扑排序+入度检测
- signal(SIGPIPE,SIG_IGN)问题
- 数字图像处理基本算法实现(2)--section3.3直方图处理