定义一个symbol在某个lisp文件中,
;; config.lsp
(set 'java-home "C:\\Program Files\\Java\\jdk1.6.0_41")
(set 'glassfish-home "C:\\portal\\glassfish")
(set 'cloud-engine-home "C:\\cloud_engine")
然后在另一个lisp文件中加载这个lisp文件:
#!/usr/bin/newlisp
;; initialze environment
(println "check configurable variables in config.lsp file ...")
(load "./config.lsp")
(unless (file? java-home)
(begin
(println "java-home: " java-home " doesn't exist")
(exit)))
(unless (file? glassfish-home)
(begin
(println "glassfish-home: " glassfish-home " doesn't exist")
(exit)))
(if (empty? cloud-engine-home)
(begin
(println "cloud-engine-home: " cloud-engine-home " is empty")
(exit)))
的确可以使用。
但是如果第二个lisp文件又加载了另一个lisp模块文件,第三个lisp模块就无法得到java-home等变量的值。
如果想得到,就需要用global函数。
所以config.lsp文件内容修改一下:
;; config.lsp
(set 'java-home "C:\\Program Files\\Java\\jdk1.6.0_41")
(set 'glassfish-home "C:\\portal\\glassfish")
(set 'cloud-engine-home "C:\\cloud_engine")
(global 'java-home)
(global 'glassfish-home)
(global 'cloud-engine-home)
可以参考文档:
http://www.newlisp.org/newlisp_manual.html#contexts