rebol:rebol教程

第一篇 如何安装REBOL

这两天,总是喜欢在网上看看REBOL相关的教程,可以说,现在迷上了REBOL。可惜,REBOL的教程里面几乎找不到中文的资料,所以,决定在时间之余,把看到的东西总结一下,这样好作为一个入门的过程。

任何一门编程语言,都需要相关的解释器或者编译器才能正确执行,所以下面就REBOL的相关情况做一介绍。REBOL是一种直译式的语言,所以为了正确试用它,必须首先安装解释器。解释器的安装和大多数的解释器或编译器的安装方法一样,下面详细介绍:

1.从http://www.rebol.com/download.html下载解释器REBOL/View

需要注意的是,你也可以用REBOL/Core,但是它并不支持图形界面,而REBOL/View是专门用于图形界面的。同时你会发现REBOL/SDK和REBOL/Command,但是马上会看到那令人生畏的字:“Purchase” 。所以不管怎么说,REBOL/View是你最佳的选择!

2.安装

双击下载文件rebview.exe,会出现一个界面(此时需要的时间比较长,请耐心等待),当界面上出现Console后,用鼠标左键单击,弹出一个对话框,这个对话框就是解释器的界面,在这个地方你就可以敲入可爱的代码,然后出现激动人心的结果… …

实际上,从上面的过程也可以看出来,REBOL不需要安装!

如果你要安装的话,则在Console的提示符下键入“install” ,则出现安装对话框,按照提示安装即可。

从此,就可以安心地工作了,你需要的仅仅是一个简单的代码编辑器,如开源的软件notepad++ 。

第二篇 REBOL入门

或许,你早就想尝试一下,用REBOL写的代码是什么样子呢?接下来,我们就用常见的向世界问好的方式告诉你,REBOL是怎样工作的。

在Console窗口敲入下面的语句,结果你会发现向世界问好的方式是如此简单! >> print "Hello World!"

== Hello World!




如果你想有一种更特别的方式,则敲入下面的代码,弹出下面的界面。
>> alert "Hello World!"






运行之后,出现上图的界面,多漂亮!这样简单的一句话,出现的效果是令人惊奇的!那你还犹豫吗?赶快投入时间来学习吧,有更令你惊叹的风景等着你呢!

好了,这简单的例子运行完了,你是不是很想知道它的更多的内容呢?且等等,让我们休息休息,然后去风光旖旎的地方,享受它给的快乐… …

第三篇 REBOL基本语法

——值类型

先看看REBOL的语法。

REBOL支持很多值类型,比如货币、时间、日期等等。不同的值可以在REBOL中直接书写。

1.数值

REBOL支持整数、小数以及科学计数的数值。如12.33,0.332,1.23E12,但是数值不能过大,否则会出现溢出。如: >> 2.23E400

** Math Error: Math or number overflow

** Where: halt-view

** Near: halt




2.时间

时间是这样写的:小时:分钟:秒,中间用冒号分开。如12:30、12:20:00、0:12.23,如:
>> 0:12.23

== 0:00:12.23




说明后者相当于0小时0分12.23秒。

3.日期

一般用国际上通用的格式来写:日/月/年或年/月/日,日期也可以包括时间和时区,如:
>> 20-Apr-1998

== 20-Apr-1998

>> 20/Apr/1998

== 20-Apr-1998

>> 20-4-1998

== 20-Apr-1998

>> 20/4/1998

== 20-Apr-1998

>> 1998-4-20

== 20-Apr-1998

>> 20-Apr-1998/12:30 ;有时间的日期

== 20-Apr-1998/12:30

>> 20-Apr-1998/12:30-13:30 ;有时区的日期

== 20-Apr-1998/12:30-13:30






4.货币

可以直接写为美元的形式,如: >> $12.34

== $12.34




5.元组

元组指软件的版本、RGB颜色集合、IP地址等,是以点分隔的一系列数据,如:
>> 2.3.0.3.1 ;版本号

== 2.3.0.3.1

>> 255.255.0 ;颜色值

== 255.255.0

>> 199.4.80.7 ;IP地址

== 199.4.80.7






6.字符串

字符串分为两种格式:单行的字符串一定用双引号引起来;但是多行的字符串一定要用一对大括号括起来。需要注意的是,如果字符串中需要双引号这些特殊的字符,则一定用大括号括起来。如:
>> "Here is a single-line string" ;单行文本用双引号即可

== "Here is a single-line string"

>> { Here is a multiline string that

contains a "quoted" string. } ;多行文本需要用大括号

== {Here is a multiline string that

contains a "quoted" string.}






7.邮箱地址 >> info@REBOL.com

== info@REBOL.com




8.统一资源定位符
>> http://www.REBOL.com

== http://www.REBOL.com

>> ftp://ftp.REBOL.com/sendmail.r

== ftp://ftp.REBOL.com/sendmail.r




9.文件名

文件名前面必须前置一个百分号,用来区别其他的词。如
>> %data.txt

== %data.txt

>> %images/photo.jpg ;可以加上路径

== %images/photo.jpg





10.对子

对子用来表示空间的坐标,如显示的位置。两个数字之间用“x”分隔。如
>> 100x50

== 100x50

>> 1024x768

== 1024x768





11.序列号

序列号相当于身份证号码,如电话号码,型号,信用卡号码等。如:
>> #707-467-8000

== #707-467-8000

>> #0000-1234-5678-9999

== #0000-1234-5678-9999





第四篇 REBOL基本语法

——词

词是REBOL的符号。词是不是一个变量决于它是如何被使用的。词也直接用作符号。REBOL没有关键字,对于用什么词和如何使用是没有什么限制的。例如,您可以定义自己的函数“print”来代替语言内置的函数“print”。

词不区分大小写,并可以包含连字符和其他一些特殊字符,如+ , -, ' , * ! , 〜 , & , 。 ,和? 。以下例子是有效的词:

number? time? date!
image-files l’image
++ -- == +-
***** *new-line*
left&right left|right

但是以下的符号不能用于词中:

@ # $ % ^ ,

从上面的内容可以看出,词在REBOL中是非常灵活的。

第五篇 REBOL基本语法

——块

块将代码、列表、数组、表、目录等组合为一个整体。块是一种用指定的顺序来组织数据的系列。

块一定要用一对方括号括起来,在块里面,值和词以任意的顺序组织,而且可以书写在多行上。下面的例子是有效的块示例:
>> [white red green blue yellow orange black]

== [white red green blue yellow orange black]

>> [

Ted ted@gw2.dom #213-555-1010

Bill billg@ms.dom #315-555-1234

Steve jobs@apl.dom #408-555-4321

]

== [

Ted ted@gw2.dom #213-555-1010

Bill billg@ms.dom #315-555-1234

Steve jobs@apl.dom #408-555-4321

]






块通常用来组织代码和数据,如
>> loop 10 [print "hello"]

hello

hello

hello

hello

hello

hello

hello

hello

hello

hello




第六篇 REBOL基本语法

——变量

为了定义一个变量,我们必须要用到冒号。如:
>> age: 22 ;定义变量age的值为22

== 22

>> snack-time: 12:32 ;定义变量snack-time的值为12:32

== 12:32

>> birthday: 20-Mar-1997 ;定义birthday的值为20-Mar-1997

== 20-Mar-1997

>> friends: ["John" "Paula" "Georgia"] ;定义friends的值为块

== ["John" "Paula" "Georgia"]






第七篇 REBOL基本语法

——计算

块可以通过计算得到他们的值。块中的值和词都按照从左到右的顺序计算。 >> print age

22

>> print third friends

Georgia

>> loop 10 [prin "*"] ;注意此处并没有换行

**********>>



>> print 2 + 3 * 10 ;注意在操作符和数据之间要有空格

50

上面的例子很有意思,在一般的语言里面,表达式的计算总是按照算法优先的准则进行的,但是在REBOL里面,只有按照从左到右的顺序来计算,所以才有上面奇怪的结果!如果想得到你想要的结果,则要这样计算:

>> print 2 + (3 * 10)

32






第八篇 REBOL基本语法

——函数

REBOL里面的函数是这样定义的:

sum: func [a b] [a + b]

其中,sum是函数名,func用来定义一个新的函数,[a b]是参数表,[a + b]是函数体。举个例子:
>> sum: func [a b] [a + b] ;定义函数sum

>> print sum 2 3

5




对于某些函数,你也许需要局部变量但不要把他们作为参数。你可以使用function代替以上情况中出现的func,像这样定义:
>> average: function [series] [total] [

total: 0

foreach value series [total: total + value]

total / (length? series)

]

其中,average为函数名,function用来定义一个新的函数,[series]为参数表,[total]为局部变量。如:

>> print average [37 1 42 108]

47






第九篇 REBOL基本语法

——路径

下面是典型的文件路径和URL路径:

%source/images/globe.jpg
http://www.REBOL.com/examples/simple.r

实际上,路径可用于从块中选择相应的值,从字符串中提取字符,访问对象中的变量等。如:
>> towns: [
Hopland [
phone #555-1234
web http://www.hopland.ca.gov
]
Ukiah [
phone #555-4321
web http://www.ukiah.com
email info@ukiah.com
]
]

>> print towns/ukiah/web

http://www.ukiah.com





第十篇 REBOL基本语法

——对象

对象是具有确定值的一系列变量的组合。对象用来管理具有复杂行为的数据结构,下面的例子就说明如何用对象来建立银行账户的属性和函数。
account: make object! [

name: "James"

balance: $100

ss-number: #1234-XX-4321

deposit: func [amount] [balance: balance + amount]

withdraw: func [amount] [balance: balance - amount]

]




其中,name、balance、ss-numbe、deposi、withdraw是account对象的局部变量,account对象的变量可以用路径来引用,如:
>> print account/balance

$100.00

>> account/deposit $300 ;调用函数deposit

== $400.00

>> print ["Balance for" account/name "is" account/balance]

Balance for James is $400.00






下面的例子演示了如何在原来的对象的基础上创建一个新的对象,同时给新的对象一个新的变量balance,用来替换原来的变量:
>> checking-account: make account [

balance: $2000

]

>> print checking-account/balance

$2000.00

这个时候发现新的变量替换了原来的变量。






我们也可以在原来对象的基础上加上两个全新的变量,形成一个新对象,举个例子:
>> checking-account: make account [

bank: "Savings Bank"

last-active: 20-Jun-2000

]

以上创建了一个新的对象,下面执行语句检查是否成立。

>> print checking-account/bank

Savings Bank

>> print checking-account/last-active

20-Jun-2000




第十一篇 REBOL基本语法

——文件操作

REBOL对文件的操作相当简单。下面给出一些常用的例子加以说明。你可以这样操作文件:
假设在REBOL的工作路径中有一个名为exam.txt的文件。则

>> data: read %exam.txt ;将文件exam.txt的内容读入变量data

== "This is rebol data!" ;这是文件内容

>> print read %exam.txt ;将文件exam.txt的内容打印出来

This is rebol data!

>> write %exam.txt data ;将变量data中存储的内容写入文件

>> write %exam.txt now ;将当前时间写入文件

>> write/append %exam.txt now ;将当前时间追加到已有文件内容的后面

>> Make-dir %new/ ;在当前目录下创建一个文件夹

== %new/

>> print What-dir ;显示当前工作路径

/D/REBOL/

>> rename %exam.txt %exam1.txt ;更改文件名称

>> delete %exam1.txt ;删除文件

>> print size? .txt ;查询文件大小

>> print modified? .txt ;查询文件修改时间

7-Nov-2008/8:31:50+8:00

相关推荐

相关文章