REBOL十步

翻译:ShiningRay @ NirvanaStudio

这是REBOL的一个简短概要。他在十步之内展示了REBOL的基本概念,仅仅需要阅读几分钟而已。更多的详细信息可以在 REBOL/Core Manual中找到。

1. 值(Value)

是REBOL的未处理的数据。不同的值可以在REBOL中直接书写。你已经对他们很熟悉了。这里有一些例子:

数字:
1234
-432 3.1415 1.23E12
0,01 1,2E12

时间:

12:34 20:05:32 0:25.34

日期:

20-Apr-1998 20/Apr/1998 (US)
20-4-1998 1998-4-20 (国际通用)

1980-4-20/12:32 (有时间的日期)
1998-3-20/8:32-8:00
(带着一个时区)

货币:

.34 USD.34 CAD3.45 DEM34,56

元组:

3.1.5 (版本号)
255.255.0 (颜色值)
199.4.80.7
(IP地址)

字符串:

"Here is a string"
{Here is another way to write
a string that
spans many lines
and contains "quoted"
strings.}

标签:

<title> </body>
<font size="2"
color="blue">

Email:

info@rebol.com

pres-bill@oval.whitehouse.gov

URLs:

http://www.rebol.com (网页)
ftp://ftp.rebol.com/sendmail.r (文件传输协议)

mailto:info@rebol.com (email)

文件:

%data.txt
%images/photo.jpg

%../scripts/*.r

号码:
#707-467-8000
(电话号码)
#0000-1234-5678-9999 (信用卡)
#MFG-932-741-A
(模型数字)

二进制:

#{0A6B14728C4DBEF5} (十六进制编码)
64#{45kLKJOIU8439LKJklj}
(base-64
编码)

只要可能,REBOL允许国际通用格式的使用,像十进制数、货币和日期。更多关于值得信息可以在 REBOL/Core Manual 中找到。

2. 词(Word)

词Words
是REBOL的符号。他们用来直接表示某个东西为一个词,或者间接表示为一个变量(稍后会解释)。你写词就和写英文一样的(或者和其他一些自然语言一样)。

破折号和一些其他的特殊字符也可以使用。他们会被认为是词的一部分。

单词的末尾被标记为一个空格,或者以下某个字符:

同样,这些字符不能出现在单词中:

更多关于单词的内容可以在 REBOL/Core Manual.中找到

3. 块(Block)

值和词都是在块中组合。一个块由一个'[‘开始,以’]’结束。你可以以任何顺序组织值和词,用任意多行代码。REBOL允许在块中以一种自由体来创建数据库、目录、表格、集合、序列、代码、函数,等等。

块通常用来组织代码和数据:

关于块的更多信息可以查阅 REBOL/Core Manual.

 

4. 计算(Evaluation)

块可以被计算得到他们的值。块中的值和词都按照从左到右的顺序计算。下面的例子展示了他如何工作的,假设你是输到之REBOL的命令行。Blocks
can be evaluated to compute their results. The values and words of
the block are computed from left to right. The examples below show how this
works as if you typed into REBOL at the prompt. (Lines typed at the prompt
create a block, even though the brackets [ ] are not shown):.

当计算块时,它的结果以一个值返回:

括号可以用来决定计算顺序:

更多关于计算的内容可以看 REBOL/Core Manual.

 

5. 变量(Variable)

词可以用作变量。一个词后面更上冒号就可以设置它的值:

出现一个没有使用冒号的词,他就会被计算:

一个变量可以用来保存任何类型的值。在上面的例子中,词print,if,> third
都是存了函数的变量。他们刚好已经被REBOL预定义了,但他们在其他方面和其他词没什么区别。

变量只有在定义他们的上下文中才有意义。一个上下文可以跨越整个程序或者被严格限定在某个特定的块、对象、函数中。在下面的例子中,use函数声明一个词age。Age是一个局部变量,在这个块外面,他可能就含有别的值,但是这不会影响age在块中的值。

局部变量同时是由函数创建的,下一节就会叙述他。

更多关于变量的内容可以查阅 REBOL/Core Manual.

6. 函数(Function)

一个函数就是一个块,这种块可以有局部变量,当每次计算这个块的时候,局部变量都会被给与新的值。局部变量是函数的参数。函数可以用多种方法来创建。这里是最常见的:

他会新建一个函数并设置为一个词sum。第一个块描述了函数的参数,第二个块便是当调用函数的时候所计算的块(这里,他把两个值相加并返回结果)。如果要使用这个函数:

当调用sum函数时,a的值设为2同时b的值为3。他们被相加,结果被返回,同时结果被作为参数传给了print函数。

对于某些函数,你也许需要局部变量但不要把他们作为参数。你可以使用function代替以上情况中出现的func

这个series是参数,total是一个局部变量用来进行计算的。注意在两个地方用到了return,将结果作为函数结果返回。如果没有要返回的结果,可以使用exit

当然,还有更多关于函数的东西可讲,请参看 REBOL/Core Manual.

7. 路径(Path)

路径指明了一个精化。他提供了一种简便的方法来指出需要更多的信息。你可能已经对他们作为文件和URL中的一部分很熟悉了。斜杠(/)是用来分隔路径中的词的。

在REBOL中,路经也可以对块、函数、对象和字符串使用:

下面的例子演示了使用块作为小数据库并通过路径访问的简便之处:

更多关于路径的信息可以查阅 REBOL/Core Manual.

8. 对象(Object)

一个对象是一组在特定上下文中含有值的变量。对象可以用来管理有更复杂行为的数据结构。例如,一个银行帐户可以从使用对象指定属性和方法中受益:

name, balancess-number, deposit,以及withdraw 都是account 对象的局部变量。deposit和withdraw变量是在对象中定义的局部函数。account的变量可以通过路径来访问:

要生成其他的account,并设置一个新的balance但是其他的值保持不变:

你也可以通过添加一个银行名称和最后活动日期扩展已有的account对象来新建一个account:

对象还有一些别的特性,包括隐藏变量。想要发现更多内容,请看 REBOL/Core
Manual
.

9. Messages消息

一个REBOL消息,简单的说,是一个从一个地方发送到另一个地方的文本文件。不管消息时在计算机之间、进程之间、还是人之间发送的——消息的形式都是一样的。他们由REBOL头开始,标示了内容、日期和其他属性:

头可以包含其他信息,由消息的目的和重要性决定。头接下来跟着的是消息的内容本身。就像上一节所显示的,他可以包含数据、代码或者两者的混合。

消息和在已有的互联网协议如http, mail
(SMTP & POP), new 和
ftp上传送。消息也可以被嵌在别的内容形式中,例如网页或者文档文件。在下面的例子,REBOL从一个网站读取一个消息并且计算它:

这个例子通过EMAIL发送一个简短的REBOL消息:

这个例子会检查每一个发送到你邮箱的消息是否从其他的REBOL程序中发出的:

import 函数把EMAIL消息转换成REBOL对象以便访问。如果email包含一个x-rebol行,那么它就是从REBOL发出的。

 

10. 方言(Dialect)

方言是携带了以不同的值和词的语法(顺序)的使用方式产生的精炼了的含义。方言一般是唯一的并且针对他们所设计解决的问题是十分合适的。

其实你已经看到了一写简单的方言。例如,一个函数的参数列表就是一种方言,除了那些已经在这里显示了的还包含很多种变体。其他的方言也可以用来分析表达式和格式化输出。

这里有一些其他方言的例子,可以用来解决特殊的问题。第一个是影像工作室控制脚本::

一个图形用户界面:

足球赛程:

安装脚本:

这有无穷无尽的可能性。更多关于方言的介绍将会在REBOL继续开发之前几个月提供给大家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注