脚本文件
结束交互环境之后,历史记录就被清除了,下次无法延续。有些程序,我们觉得有价值,想把
它保留下来,或许以后还用得着。REBOL 允许我们通过记事本等文本编辑软件,进行代码的
编写并存档。以前面网站下载图片的程序为例来说,你可能想把它保留下来。做法如下:
用任何一个文本编辑器(例111 如Windows 的记事本或Mac OS X 的文本编辑),将之前
的ABC 三行代码依次输入(或者从交互环境的历史记录中复制过来)。
222 最前面加上REBOL[],这称为REBOL文件头(header)。
333 把此文件保存为纯文本格式,UTF-8 编码(下一章再解释什么是UTF-8),保存在与
REBOL 解释器相同的目录,文件名download.reb。
如果你使用微软Windows 记事本,保存时的操作方式是:文件→另存为→选择目录→保存类
型(所有文件)→输入文件名download.reb →编码(UTF-8)→确定。如果你使用Mac OS
X 的文本编辑,保存时的操作方式是:格式(纯文本)→存储为→选择目录→输入文件名
download.reb →编码(UTF-8)。
REBOL 解释器没有限制我们脚本必须使用什么扩展名,一般常看到的REBOL脚本扩展名有
.r、.reb、.r3。建议使用.reb 当扩展名。
编写REBOL 脚本文件时,不要使用太华丽的编辑器(例如微软Word),因为:
它可能会在文件中记录很多REBOL •• 解释器不需要的信息(例如字体、颜色),这将导
致我们的代码无法运行。
•• 它可能会在我们编辑的时候,多余地帮我们做字符转换,例如把""转为“”,这将导
致我们的代码无法运行。
在交互环境下,先设置好url 单字,然后在do 的后面接着输入脚本文件名,就可运行
REBOL 脚本文件。REBOL 中规定文件名称前面要加上% 符号。也就是说,download.reb 必须
写成%download.reb。
如果脚本运行成功,会看到一行文字,打印出脚本的名称(Script)、版本(Version)、日期
(Date),这些我们目前都没定义,所以显示Untitled 和none(空值)。没有错误信息表示一切
顺利。
你到当前的目录下会发现图片已经下载回来了,用鼠标双击图片,就可打开。如果运行不成功,
就看看错误信息,从中分析,找出问题所在,并做出修改,这是程序设计人员必须具备的基本
素质。下一个页面是分析问题的过程示例。
如果输入do %download.reb,得到的错误信息是**Access error: cannot open:
%download.reb,这表示文件不存在。可通过LS,看看当前目录下所有的文件,证实文件
确实不存在。
如果do %download.reb 无法顺利运行,而且在LS 的结果中看到一个文件名为download.
reb.txt,这表示我们之前在保存文件时没有做出正确的选择,造成文件名称错误。我们可以通
过rename 改变它的名字,做法如上图所示。
如果确定文件存在正确的目录下,文件名称也正确,但还是无法顺利执行,这时候我们就要怀
疑是不是内容格式有错误。再强调一次,REBOL 要求脚本必须是纯文本格式,UTF-8 编码。
关于文本格式与编码,下一章会有说明。
某些文字编辑器保存文件的时候,如果不做选择,将默认采用富文本格式而不是纯文本格式。
富文本格式内会包含字体、颜色等信息,这类格式的文件都比较大,通过size? 函数就可以
得知该文件的大小是多少字节(下一章会介绍字节),如果我们发现它比纯文本代码格式所需
要的94 字节更多(你的程序中的空格与换行可能与我的不完全一致,所以你的脚本大小不一
定是94 这个数字,但应该很接近94),且大了很多,则可能是富文本,这时候你需要用编辑
器重新将文件保存为之前规定的格式(UTF-8 纯文本)。按照前面的说明,重新保存一次。
这是另一个脚本文件的范例。有点特别的是,我们在代码中使用了中文(REBOL 允许代码中
出现各国文字)。我暂时不解释这段代码的细节。
与前面download.reb 的例子一样:
111 通过文本编辑器输入代码。
222 保存时用UTF-8 纯文本格式,文件名greeting.reb,存放到当前目录。
同样,通过do 函数来执行greeting.reb 代码。你会看到此程序询问你叫什么名字,输入你的名
字之后按下回车键,就会看到此程序对你打招呼。
我们已经写过download.reb 与greeting.reb 这两个脚本文件。既然程序要写在文件中才能保存,
那么交互环境又有什么价值?
虽然REBOL 程序员真正的程序设计工作都是在文本编辑器中完成的,但他们经常会同时打开
交互环境,在上面做一些实验,验证自己的想法是否正确,或者查询一下说明文档,然后再回
文本编辑器内继续写程序。
在交互环境与文本编辑器中写代码的差异不大:交互环境的程序通常很短,一行就是一个程序。
交互环境不需要写REBOL[]文件头。其他情况下,交互环境与文本编辑器几乎没有差别。
本文节选自《编程ING:人人都能学会程序设计》一书
蔡学镛著
电子工业出版社出版
图书详细信息:http://blog.csdn.net/broadview2006/article/details/7768124