REBOL简明笔记

来源:互联网 发布:锐捷端口聚合配置 编辑:程序博客网 时间:2024/06/07 08:56

REBOL的描述

如何描述REBOL语言?革命性的,功能强大的,灵活的----而且是不同的。事实上,REBOL可能不像您以前用的任何一种语言。在用一种直接的同时也是“非常规”的方式来设计解决实际编程任务方面,REBOL为那些想在脚本语言中寻求更多的编程者提供了一个崭新的编程工具箱。

 

REBOL特性

它使用自然的类英语语法,且支持许多数据类型,像URL和电子邮件地址。REBOL是一种支持internet的语言;使用REBOL,可以用一行简单的代码实现下载web页面或者发送一条电子邮件消息。

不但如此,REBOL还提供称之为”dialecting”的高级功能,此功能允许您创建用于您自己特殊目的的子语言,特别为您使用REBOL的任务定制。

 

what命令

what命令显示一个所有全局定义的函数列表。

 

quit命令

quit命令离开解释器。

 

数据类型

REBOL的出色之一是它有大量内置的数据类型,这些已设计成反应您在现实世界中发现的数值,如电子邮件地址、URL、日期、时间和货币值。

 

type?探索数据类型

>> type? bigwindlee@hotmail.com

== email!

>> type? "bigwidnlee@hotmail.com"

== string!

>> type? 5.0

== decimal!

>> type? $5.0

== money!

所有数据类型名称以一个惊叹号结尾。查询属性的函数以问号标记结尾(如type?函数)。

 

缺省情况下,REBOL会自动对所有字求值。通过“求值”REBOL将自动用字所关联的值来替换字。如果字没有与值关联,那么REBOL返回错误。

>> myval: $5.00

== $5.00

>> print myval

$5.00

>> myval

== $5.00

>> myval + 1

== $6.00

 

定义新字

>> myval

== $5.00

>> myval2: myval + 1

== $6.00

>> myval2

== $6.00

 

字的基本知识

REBOL解释器遇到字,它正常的反应是将它求值。当字被求值时,它被其关联的值所替换。

 

数学运算符

REBOL支持整套算数运算符,包括标准的+-*/。此外还包括//余数运算符。

注意2点:首先,在值与运算符之间要放空格;解释器不能正确分析1+7,而1 + 7可以。其次,REBOL从左到右对算术表达式求值。他没有像C中特殊的运算符优先权。如果您想显式的表示算数求值的顺序,可以用括号将表达式括起。

 

前缀运算符

>> abs -23

== 23

>> add 111 222

== 333

>> divide 4 2

== 2

>> multiply 3 3

== 9

>> remainder 9 4

== 1

>> subtract 4 9

== -5

 

日期

>> now

== 10-Aug-2009/22:33:31+8:00

>> now + 14

== 24-Aug-2009/22:33:35+8:00

 

数据类型列表

整数、小数、时间、日期、货币、逻辑、字符、空值、字符串、二进制、电子邮件、文件、urlissue、元组、标记、块、散列、列表、路径和字。

许多数据类型都有它自己特殊的运算符和函数,且数据类型可以以无数种方式进行交互。

 

探测

简单地输入:

>> type? probe myemail

bigwindlee@sina.com

== email!

probe字期望单个字或块作为变量。它将打印该字的值,并返回该字的值。可以认为probe是标准UNIX “tee”命令的REBOL版本。

 

文字字

有时当我们想引用字本身,而不是它所关联的值。REBOL提供了文字字语法。

>> type? myemail

== email!

>> type? 'myemail

== word!

'myemail读音:”the word myemail”

前缀意味着您正在谈论the word。没有,意味着正在谈论字的值。

 

手工求字值

>> myemail: bigwindlee@hotmail.com

== bigwindlee@hotmail.com

>> myword: 'myemail

== myemail

>> do myword

== bigwindlee@hotmail.com

 

字关联

“set the word myvar to the value $5.00”

>> set 'myval $5.00

== $5.00

 

更多字关联

>> myword: 'cost

== cost

>> set myword $5.00

== $5.00

>> myword

== cost

>> cost

== $5.00

 

取消设置

>> unset 'cost

>> cost

** Script Error: cost has no value

** Near: cost

 

make函数

有时在没有足够信息的情况下,REBOL不能自动指出特定的值是什么类型。make函数允许我们创建特定类型的值。我们指定类型,而不是依靠REBOL去试图检测我们的数据类型。

>> unset 'myemail

>> 

>> myemail: make email! "bigwindlee"

== bigwindlee

>> type? myemail

== email!

make函数的第一个变量应该是数据类型,像money!email!url!。第二个变量应该是包含您要创建的值的字符串。只要指定一个有效的字符串,make将精确地创建您想要的值。

 

构建块

用方括号[]将一组值括起来创建块。他们能包含不关联值的字,并且块的内容是不立即求值的。

>> myblock: [ this and that ]

== [this and that]

 

代码块

可以在块中插入代码如下:

>> mycode: [ print "foo" ]

== [print "foo"]

>> do mycode

foo

 

块特性

>> mydata: [ 1 2 3 ]

== [1 2 3]

>> do mydata

== 3

REBOL返回在代码块中遇到的最后一个值。

 

嵌套块

>> instructions: [

[    [ remove hard drive from chassis ]

[    [ throw hard drive out window ]

[    [ scream "foo foo foo!" ]

[    ]

== [

    [remove hard drive from chassis]

    [throw hard drive out window]

    [scream "foo foo foo!"]

]

>> do instructions

== [scream "foo foo foo!"]

 

访问块

>> myblock: [ jimmy cracked corn ]

== [jimmy cracked corn]

>> first myblock

== jimmy

>> myblock/1

== jimmy

>> last myblock

== corn

>> myblock/3

== corn

>> myblock/2

== cracked

 

块路径

我们也可以将带值的字(用作键)配成对,并用字作为块的索引:

>> order: [

[    amount 10

[    cost $3.50

[    email

[    drobbings@gentoo.org

[    ]

== [

    amount 10

    cost $3.50

    email

    drobbings@gentoo.org

]

>> order/email

== drobbings@gentoo.org

>> order/cost

== $3.50

>> order/amount

== 10

注意到order块包含六个独立的字,字amount不与任何值关联。order/cost称为路径。