newLISP语法
来源:互联网 发布:js实现发表评论功能 编辑:程序博客网 时间:2024/05/21 17:17
newLISP的最大特点就是语法简单,估计一张纸能说明白最常用的。下面就说几个:
define 是用来定义函数的,比如下面定义并使用了一个my-add函数
> (define (my-add x) (+ 1 x))(lambda (x) (+ 1 x))> (my-add 4)5
(+ 1 x) 是函数体。
调用函数上面已经演示过,就是(函数名 参数1 参数2) 这样的形式,比如复制一个文件:
> (copy-file "/opt/git_backup.lsp" "/opt/git_backup.lsp2")true返回true表示复制成功。
阻止表达式求值
前面加一个单引号就可以了。比如:
> '(+ 2 4)(+ 2 4)
条件语句
> (if (= 9 9) (println "ok"))ok"ok"上面在条件判断成立的情况下,打印"ok"字符串。
看到两次是因为第一次是println打印,第二次是(println "ok") 的返回值显示在交互环境下。
来个实际应用到的,directory可以返回指定目录下的子文件(非递归)组成的list, 如果目录不存在,则返回nil, if判断会失败。
> (directory "/opt")("shareOn110" "gitolite.conf-compiled.pm" "repositories" "scrum.sql" ".." "git_backup.lsp2" ".#git_backup.lsp" "." "git_backup.lsp" "git_backup.lsp~" "#git_backup.lsp#" "gitolite.conf")> (directory "/opt/a")nil> (if (directory "/opt/a") (println "ok"))nil因为/opt/a目录不存在,所以不会打印"ok"。
下面的if语句复杂点,有点像case语句的结构,如果条件之一满足,则分别执行对应的语句。如果所有条件都不满足,则执行最后的语句:
(if (= ostype "Linux") (import "libz.so") (= ostype "BSD") (import "libz.so") (= ostype "OSX") (import "libz.dylib") ... (println "cannot import libz on this platform"))
遍历list
dolist就是干这事的。
> (dolist (file (directory "/opt")) (println "file: " file))file: shareOn110file: gitolite.conf-compiled.pmfile: repositoriesfile: scrum.sqlfile: ..file: git_backup.lsp2file: .#git_backup.lspfile: .file: git_backup.lspfile: git_backup.lsp~file: #git_backup.lsp#file: gitolite.conf"gitolite.conf">
上面的代码首先用directory找到/opt目录下的文件,放在一个list中返回,然后用(dolist (file ...) 来遍历。file里面就是每次遍历的list中的一个元素。
(println ...) 用来打印file.
exec执行系统命令:
比如备份文件:
> (exec "cp -r /home/git/repositories /opt/shareOn110/bk/")()>
- newLISP语法
- newlisp 异常
- newlisp debugger
- newLISP symbol
- newlisp安装
- newLISP Ubuntu环境安装
- newLISP window7 安装
- newlisp 使用crypto模块
- newlisp 启动参数
- newlisp 获取文件名
- newlisp string 操作
- newlisp socket编程实例
- newlisp字符表示
- newlisp的lambda表达式
- newlisp set 函数
- newlisp 注释生成文档
- newlisp 监控redmine
- newlisp 获取cpu信息
- Binder通信流程图
- NYOJ-92:图像有用区域
- Hibernate 之 二级缓存
- 【VC报错】fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h
- 作为软件工程师,你必须知道的20个常识
- newLISP语法
- AS3.0易错点1———————————— TextFormat用法
- Flex 折线图中对折线手动设置显示问题
- Linux CURL的安装和使用
- 对于UITableViewStyleGrouped类型的UITableView的背景色设置问题
- 解决 项目报错java.net.bindexception: address already in use: jvm_bind:8080
- 想进入SAP行业的人仔细看看:SAP模块的选择
- 推荐一个移动开发者的网站
- 转载:Android之PreferenceActivity