当前位置:编程学习 > 网站相关 >>

newLISP语法

newLISP的最大特点就是语法简单,估计一张纸能说明白。下面就说几个:
define 是用来定义函数的,比如下面定义并使用了一个my-add函数
[plain] 
> (define (my-add x) (+ 1 x))  
(lambda (x) (+ 1 x))  
> (my-add 4)  
5  
 
(+ 1 x) 是函数体。
调用函数上面已经演示过,就是(函数名 参数1 参数2) 这样的形式,比如复制一个文件:
[plain] 
> (copy-file "/opt/git_backup.lsp" "/opt/git_backup.lsp2")  
true  
返回true表示复制成功。
 
阻止表达式求值
前面加一个单引号就可以了。比如:
[plain]  
> '(+ 2 4)  
(+ 2 4)  
 
symbol
[plain] 
> (set 'mysymbol "ebd")  
"ebd"  
> (upper-case mysymbol)  
"EBD"  
上面第一句设置了一个symbol, 值为字符串。
第二句使用该symbol。注意此时无需单引号。
 
条件语句
[plain] 
> (if (= 9 9) (println "ok"))  
ok  
"ok"  
上面在条件判断成立的情况下,打印"ok"字符串。
看到两次是因为第一次是println打印,第二次是(println "ok") 的返回值显示在交互环境下。
 
来个实际应用到的,directory可以返回指定目录下的子文件(非递归)组成的list, 如果目录不存在,则返回nil, if判断会失败。
[plain] 
> (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"。
 
遍历list
dolist就是干这事的。
[plain] 
> (dolist (file (directory "/opt")) (println "file: " file))  
file: shareOn110  
file: gitolite.conf-compiled.pm  
file: repositories  
file: scrum.sql  
file: ..  
file: git_backup.lsp2  
file: .#git_backup.lsp  
file: .  
file: git_backup.lsp  
file: git_backup.lsp~  
file: #git_backup.lsp#  
file: gitolite.conf  
"gitolite.conf"  
>   
 
上面的代码首先用directory找到/opt目录下的文件,放在一个list中返回,然后用(dolist (file ...) 来遍历。file里面就是每次遍历的list中的一个元素。
(println ...) 用来打印file.
 
exec执行系统命令:
比如备份文件:
[plain] 
> (exec "cp -r /home/git/repositories /opt/shareOn110/bk/")  
()  
>   
 
 
补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,