今日不小心走進(jìn)了圖書(shū)館,本來(lái)想借一本Python編程的書(shū),結(jié)果偶然看到有一本《Java夜未眠》沒(méi)有被借走,翻了幾頁(yè)感覺(jué)寫(xiě)的不錯(cuò),再一看是蔡學(xué)鏞著,原來(lái)是蔡老師的書(shū),索性借回來(lái)讀,發(fā)現(xiàn)蔡老師在書(shū)里邊拿出一個(gè)段落來(lái)講一種名叫Rebol的語(yǔ)言,號(hào)稱(chēng)是互聯(lián)網(wǎng)語(yǔ)言,既然是互聯(lián)網(wǎng)語(yǔ)言,我就感興趣了,在IBM developerWorks上看了一篇入門(mén)教程,覺(jué)得這個(gè)語(yǔ)言跟其他語(yǔ)言很不一樣,索性摘錄下來(lái)跟有興趣的朋友分享。
紅字部分是我的標(biāo)注。
-----------------------------------------------------
Rebol入門(mén)教程
[from ibm developerWoks]第一章為教程提示 略去第二章 介紹Rebol
如何描述 Rebol 語(yǔ)言?革命性的,功能強(qiáng)大的,靈活的 -- 而且是不同的。事實(shí)上,Rebol 可能不象您以前用的任何一種語(yǔ)言。在用一種直接的同時(shí)也是“非常規(guī)”的方式來(lái)設(shè)計(jì)解決實(shí)際編程任務(wù)方面,Rebol 為那些想在腳本語(yǔ)言中尋求更多的編程者提供了一個(gè)嶄新的編程工具箱。
對(duì)于我們開(kāi)發(fā)者而言,學(xué)習(xí) Rebol 可以給予我們新的活力和富有挑戰(zhàn)性。在承諾有些完全不同的同時(shí),Rebol 還使用了新的編程模式,在與大多數(shù)傳統(tǒng)語(yǔ)言使用的有些相似的同時(shí),又是“如此不同”以至于經(jīng)驗(yàn)豐富的開(kāi)發(fā)者都感到困惑。
在許多方面 Rebol 是與眾不同的。它使用自然的類(lèi)英語(yǔ)語(yǔ)法,且支持許多數(shù)據(jù)類(lèi)型,象 URL 和電子郵件地址。Rebol 是一種支持因特網(wǎng)的語(yǔ)言;使用 Rebol, 可以用一行簡(jiǎn)單的代碼實(shí)現(xiàn)下載 Web 頁(yè)面或者發(fā)送一條電子郵件消息。不但如此,Rebol 還提供稱(chēng)之為“dialecting”的高級(jí)功能,此功能允許您創(chuàng)建用于您自己特殊目的的子語(yǔ)言,特別為您使用 Rebol 的任務(wù)定制。
然而,在您接觸這些招人喜愛(ài)的特性之前,掌握 Rebol 的基礎(chǔ)知識(shí)是很重要的。這就是在本教程中我們將要做的。在您熟練掌握這些基礎(chǔ)知識(shí)后,我將給您展示一些在線(xiàn)資源,使您了解 Rebol 的更先進(jìn)特性。
從訪(fǎng)問(wèn) http://www.rebol.com 來(lái)開(kāi)始使用 Rebol。在本教程中,我們將使用 Rebol 的基本版本 -- 稱(chēng)為 Rebol/Core,它適用于大約 40 種不同平臺(tái)。雖然我們僅涉及 Linux 的安裝,但本教程中與 Rebol 相聯(lián)系的部分適應(yīng)于每個(gè)平臺(tái)。進(jìn)入 http://www.rebol.com 后,選擇開(kāi)發(fā)者部分,然后單擊“Downloads”。選擇可用于您平臺(tái)上的 Rebol/Core 的最新版本。目前,有以下一些版本可用:libc5、libc6 x86 Linux、Linux/Alpha、Linux/PPC、Linux/Sparc、UltraSparc、Linux/StrongARM、 MIPS 和 68K! 很顯然,在 Rebol 的移植方面 ,其開(kāi)發(fā)者花了很大的心血。
對(duì)于 libc6 x86 Linux,Rebol/Core 檔案標(biāo)志為“core042.tar.gz”。在下載完您所需的文檔后,創(chuàng)建一個(gè)“rebol”目錄,并將此文檔放至該目錄下。進(jìn)入該目錄,輸入
$ tar xzvf core042.tar.gz
將此文檔解包。五個(gè)文件將解包到當(dāng)前目錄,這其中包括 rebol 可執(zhí)行文件。
輸入
$ ./rebol
啟動(dòng) Rebol。您將看到類(lèi)似于以下情況:

在這里,您將要配置系統(tǒng)中網(wǎng)絡(luò)方面的選項(xiàng),包括輸入您的電子郵件地址、SMTP 和 POP 服務(wù)器以及網(wǎng)絡(luò)代理的設(shè)置。由于 Rebol 是支持因特網(wǎng)的語(yǔ)言,它需要這些設(shè)置選項(xiàng)以訪(fǎng)問(wèn)因特網(wǎng)。
(這里新的版本(2.6.2)已經(jīng)不需要了,只有執(zhí)行do setup.r才會(huì)進(jìn)入配置過(guò)程)
在你完成配置步驟后,Rebol 會(huì)詢(xún)問(wèn)在當(dāng)前目錄是否允許創(chuàng)建“user.r”文件。您的設(shè)置將存儲(chǔ)在這個(gè)文件中。繼續(xù),并說(shuō) "Y"。這是 Rebol 的內(nèi)置安全性支持的一個(gè)例子。
下次啟動(dòng) Rebol 時(shí),記住要從“rebol”所在目錄啟動(dòng)。這樣的話(huà),Rebol 將會(huì)找到 user.r 文件,并且自動(dòng)裝入網(wǎng)絡(luò)設(shè)置。
在完成配置后,您處在交互式 Rebol 解釋器內(nèi)部。Rebol 提示符類(lèi)似于:
>>
繼續(xù),輸入“help”并敲入 Enter 鍵來(lái)查看 Rebol 的內(nèi)置幫助頁(yè)。“help”命令也能接受變量。嘗試輸入“helpprint ”。您將在屏幕上看到 print 函數(shù)的摘要。
精確地講,有哪些可用的 Rebol 函數(shù)?為了查看完整的列表,在提示符下輸入"what":
>>what
"what" 命令顯示了一個(gè)所有全局定義的函數(shù)列表。
最必不可少的 Rebol 命令之一 -- quit。如果要離開(kāi)解釋器,簡(jiǎn)單地輸入:
>> quit
....您將返回到 shell 提示符。既然知道了如何進(jìn)入和退出解釋器,現(xiàn)在該是熟悉語(yǔ)言本身了。
第三章 Rebol-語(yǔ)言
Rebol 的出色之一是它有大量?jī)?nèi)置的數(shù)據(jù)類(lèi)型,這些已設(shè)計(jì)成反映您在現(xiàn)實(shí)世界中發(fā)現(xiàn)的數(shù)值,如電子郵件地址、URL、日期、時(shí)間和貨幣值。讓我們開(kāi)始熟悉它們。
在 Rebol 提示符下,輸入:
>> drobbins@gentoo.org
== drobbins@gentoo.org
這個(gè)電子郵件地址送給解釋器后,Rebol 僅把它的重復(fù)返還回來(lái)。這是 Rebol 的標(biāo)準(zhǔn)處理方式 -- 當(dāng)文字值輸入給解釋器時(shí),它將該值重復(fù)返回。現(xiàn)在您也許想知道 drobbins@gentoo.org 是什么類(lèi)型的值。大多數(shù)語(yǔ)言將電子郵件地址作為字符串處理,所以也可能猜想 Rebol 亦是如此。然而,您會(huì)驚奇地發(fā)現(xiàn) Rebol 所作的比這更有用。
為了看 drobbins@gentoo.org 是什么數(shù)據(jù)類(lèi)型,輸入:
>> type? drobbins@gentoo.org
== email!
字 type? 是接受變量的函數(shù),它返回變量的數(shù)據(jù)類(lèi)型。正如您所見(jiàn),Rebol 事實(shí)上認(rèn)識(shí) drobbins@gentoo.org 是一個(gè)電子郵件地址 -- 很不可思議!我們不需要特殊的語(yǔ)法去指定電子郵件地址;Rebol 可以將該值識(shí)別成電子郵件地址,因?yàn)樗⒁獾角度氲?@"字符。
讓我們繼續(xù)。輸入
>> type? $5.00
== money!
同樣,Rebol 認(rèn)識(shí) $5.00 表示貨幣值。
您可能想知道為什么在 email!和 mony!后面有驚嘆號(hào)。答案很簡(jiǎn)單 -- 所有數(shù)據(jù)類(lèi)型名稱(chēng)以一個(gè)驚嘆號(hào)結(jié)尾。除此之外,查詢(xún)屬性的函數(shù)以問(wèn)號(hào)標(biāo)記結(jié)尾(如 type? 函數(shù))。Rebol 通過(guò)構(gòu)造類(lèi)似于傳統(tǒng)書(shū)寫(xiě)語(yǔ)言(如 English)的語(yǔ)法,來(lái)使其更具用戶(hù)友好性。
試著輸入以下 Rebol 表達(dá)式,來(lái)看 Rebol 所識(shí)別的數(shù)據(jù)類(lèi)型的每個(gè)值:
>> type? 1
>> type? 1.0
>> type? "foo"
>> type?
{foo}
>> type? http://www.gentoo.org
>> type? true
>>
type? yes
>> type? :print
>> type? money!
第四章 Rebol字
如 C 語(yǔ)言的變量能代表數(shù)據(jù)一樣,Rebol 有它自己的變量,稱(chēng)之為字。這里有一個(gè)如何將字與數(shù)值聯(lián)系在一起的示例。
>> myval: $5.00
注意冒號(hào)后邊要有空格。
在這個(gè)示例中,myval 一直與值 $5.00 相關(guān)聯(lián)。在表達(dá)式中用 myval 會(huì)立即求出值:
>> myval
== $5.00
>> myval + 1
== $6.00
在 Rebol 中,將字與值聯(lián)系起來(lái)是很普遍的,創(chuàng)建一個(gè)字/值對(duì)。字也是不區(qū)分大小寫(xiě)的,所以輸入 myval 與 MyVal 是一樣的
現(xiàn)在嘗試輸入任何舊字到解釋器。會(huì)出現(xiàn)如下錯(cuò)誤信息:
>> foo
** Script Error: foo has no value.
** Where: foo
缺省情況下,Rebol 會(huì)自動(dòng)對(duì)所有字求值。通過(guò)"求值"Rebol 將自動(dòng)用字所關(guān)聯(lián)的值來(lái)替換字。如果字沒(méi)有與值關(guān)聯(lián),那么 Rebol 返回錯(cuò)誤。
基于現(xiàn)有字的值,我們也可以定義新的字。嘗試這個(gè)示例:
>> myval: $5.00
== $5.00
>> myval2: myval + 1
== $6.00
>>
myval2
== $6.00
>> myval
== $5.00
>> myval: myval + 1
==
$6.00
>> myval2
== $6.00
這里,我們基于 myval 定義 myval2。然后,增加 myval 的值,并打印 myval2 的值,發(fā)現(xiàn) myval2 的值沒(méi)有更改。
正如您所見(jiàn),Rebol 字充當(dāng)了如 C 和 C++ 語(yǔ)言中變量的功能。您可能甚至想知道為什么 Rebol 的開(kāi)發(fā)者稱(chēng) Rebol 的變量為字,而不是遵循標(biāo)準(zhǔn)的術(shù)語(yǔ)。問(wèn)得好!這正是本教程下面要講的,我將演示 Rebol 字與標(biāo)準(zhǔn) C 變量所不同的獨(dú)一無(wú)二的特征。
當(dāng) Rebol 解釋器遇到字,它正常的反應(yīng)是將它求值。當(dāng)字被求值時(shí),它被其關(guān)聯(lián)的值所替換。所以,譬如,如果字 myemail 與值 drobbins@gentoo.org 相關(guān)聯(lián),那么在 Rebol 解釋器提示符下輸入:
>> myemail
....將使解釋器返回:
== drobbins@gentoo.org
這是 myemail 的值。這表明,根據(jù) Rebol,字 maemail 有含意,它代表了 drobbins@gentoo.org 這個(gè)電子郵件地址。這會(huì)很明顯,Rebol 讓您用字能作一些不尋常的事,呆一會(huì)兒我們會(huì)看到。
當(dāng)我們?cè)趲灼燎笆褂妹缊A金額時(shí),用標(biāo)準(zhǔn)的算術(shù)運(yùn)算符 +。當(dāng)然,Rebol 支持整套算術(shù)運(yùn)算符,包括標(biāo)準(zhǔn)的 +、 -、 *、和 /。除此之外,它還包含 // 余數(shù)運(yùn)算符。
當(dāng)您在 Rebol 中寫(xiě)數(shù)學(xué)表達(dá)式時(shí),您需要知道兩件重要事情。首先,在值與運(yùn)算符之間要放空格;解釋器不能正確分析 1+7 ,而 1 + 7 可以。其次,Rebol 從左到右對(duì)算術(shù)表達(dá)式求值。它沒(méi)有象 C 中特殊的運(yùn)算符優(yōu)先權(quán)。如果您想顯式的表明算術(shù)求值的順序,可以用括號(hào)將表達(dá)式括起。(這一點(diǎn)要注意哦)
除了標(biāo)準(zhǔn)的"中綴"(在當(dāng)中)算術(shù)運(yùn)算符,Rebol 也有內(nèi)置的算術(shù)運(yùn)算符。以下是它們的工作原理:
>> abs -23
== 23
>>add 23509 230
== 23739
>>divid 4
2
== 2
>>multiply 30 30
== 900
>>remainder 9 4
== 1
>>
subtract 4 9
== -5
Rebol 對(duì)日期也有極好的內(nèi)置支持。要獲取當(dāng)前日期,用字"now":
>> print now
30-Sep-2000/22:41:19-6:00
通過(guò)在日期上加上或減去一個(gè)整數(shù),可以偏移該日期一定天數(shù)。譬如,可以表示兩周前的日期:
>> print now + 14
14-Oct-2000/22:43:13-6:00
用now: 3可以把now變成3,如果要恢復(fù)過(guò)來(lái)就不知道怎么做了,不過(guò)幸好我前邊用timenow: now + 3,然后又用 now: timenow? - 3 恢復(fù)過(guò)來(lái)了,好險(xiǎn)啊,吼吼
Rebol 有相當(dāng)多的數(shù)據(jù)類(lèi)型;我們這里沒(méi)有篇幅來(lái)涵蓋所有數(shù)據(jù)類(lèi)型;這里有一個(gè)數(shù)據(jù)類(lèi)型的部分列表:整數(shù)、小數(shù)、時(shí)間、日期、貨幣、邏輯、字符、空值、字符串、二進(jìn)制、電子郵件、文件、url、issue、元組、標(biāo)記、塊、散列、列表、路徑和字。
許多數(shù)據(jù)類(lèi)型都有它自己特殊的運(yùn)算符和函數(shù),且數(shù)據(jù)類(lèi)型可以以無(wú)數(shù)種方式進(jìn)行交互。譬如,您可以從數(shù)據(jù)中抽取時(shí)間;附加到字符串;打開(kāi)、關(guān)閉和寫(xiě)入文件。在 Rebol 用戶(hù)手冊(cè)(更詳細(xì)信息請(qǐng)參閱 參考資料)詳細(xì)描述了有關(guān)所有這些數(shù)據(jù)類(lèi)型和它們相關(guān)聯(lián)的運(yùn)算符和函數(shù).
第五章 字和表達(dá)式
以前,當(dāng)對(duì) myemail 求值時(shí),Rebol 解釋器將"==drobbins@gentoo.org"寫(xiě)到屏幕上。當(dāng)交互使用解釋器時(shí),Rebol 打印任何已求值的表達(dá)式。然而,當(dāng) Rebol 代碼從文件執(zhí)行時(shí)(不用解釋器,而作為一個(gè) shell 腳本),將不能看到上面的輸出。在這種情形下,應(yīng)該用 print 命令生成輸出。也可以交互使用打印:
>> print myemail
drobbins@gentoo.org
Rebol 顯示了 myemail 的值,但不打印"==drobbins@gentoo.org"。這是因?yàn)?print 將 email 的值輸出到屏幕,而不是返回值本身。
有時(shí)想將字的值打印到屏幕,但也想在字的值上執(zhí)行附加的處理。譬如,可以輸入:
>> print myemail
drobbins@gentoo.org
>> type? myemail
==
email!
這里有一些訣竅,Rebol 提供了一種更清晰的方式來(lái)立即執(zhí)行這兩個(gè)步驟...
簡(jiǎn)單地輸入:
>> type? probe myemail
drobbins@gentoo.org
== email!
probe 字期望單個(gè)字或塊(后面將講述)作為變量。它將打印該字的值,并返回該字的值。在這個(gè)示例中,type? word 隨后對(duì)該值求值,顯示 drobbins@gentoo.org 值的類(lèi)型。可以認(rèn)為 probe 是標(biāo)準(zhǔn) UNIX "tee"命令的 Rebol 版。
大多數(shù)時(shí)間,當(dāng)我們引用 Rebol 的字時(shí),Rebol 能做我們想做的 -- 對(duì)字求值,將值傳給函數(shù)或在交互式解釋器上顯示該值。然而,有時(shí)這并沒(méi)有精確到我們想要做的。有時(shí)當(dāng)我們想引用字本身,而不是它所關(guān)聯(lián)的字。對(duì)于這種情形,Rebol 提供了一個(gè)方便的文字字語(yǔ)法。看一下這個(gè)示例:
>> type? myemail
== email!
>> type? 'myemail (只要是以單引號(hào)開(kāi)頭的,Rebol都認(rèn)為是字(word))
== word!
為了幫助您掌握文字的字的概念,您要大聲地說(shuō)(用嘴,用 English 或您熟悉的語(yǔ)言!)代碼所正在做的。是的,這意味著您盯著監(jiān)視器時(shí)要自言自語(yǔ)。不要害怕 -- 如果您對(duì)這種事情感到很困窘,那您就假裝是 Jean Luc Picard (USS Enterprise 的 Captain),您正在大聲對(duì)計(jì)算機(jī)發(fā)命令。
這個(gè)練習(xí)的關(guān)鍵是,當(dāng)您看到象這樣寫(xiě)的字:
foo
....您應(yīng)該說(shuō)"foo"。
當(dāng)您看到象這樣寫(xiě)的字:
'foo
....您應(yīng)該說(shuō)"the word foo"。
第一條命令
這里有一個(gè)您已經(jīng)輸入到 Rebol 解釋器的命令:
>> myemail: drobbins@gentoo.org
如果您是 Jean Luc Picard,您也不會(huì)使用和計(jì)算機(jī)鍵盤(pán)一樣過(guò)時(shí)的東西來(lái)輸入這個(gè)命令。事實(shí)上,您會(huì)大聲地說(shuō)(提示):
"Computer,associate the word myemail with the valuedrobbins@gentoo.org."
作為 Jean Luc Picard,不要用鍵盤(pán)輸入這些怪異的東西,小心會(huì)得腕骨綜合癥:
>> myword: 'myemail
....您要從專(zhuān)門(mén)設(shè)計(jì)的 Captain 椅起來(lái),發(fā)號(hào)施令:
"Associate the word myword with the word myemail"
注意到不同嗎?有點(diǎn)微妙差異但很重要。前綴 ' 意味著您正在談?wù)?the word。沒(méi)有 ',意味著正在談?wù)撟值?b>值。
現(xiàn)在,有一個(gè)叫 myword 的字,它有個(gè)值是它本身(也是字)。好,這很有意思,您如何告訴 Rebol 去求該字的值?很容易:
>> do myword
== drobbins@gentoo.org
棒極了!現(xiàn)在,當(dāng) Rebol 求字值時(shí),我們能夠精確地控制它了。
十分感謝 do 函數(shù),我們也可以輸入:
>> do 'myemail
== drobbins@gentoo.org
然而,這沒(méi)有什么意義,因?yàn)閮H輸入字本身也能實(shí)現(xiàn)同樣的結(jié)果:
>> myemail
== drobbins@gentoo.org
字與值相關(guān)聯(lián)有另一種方法。除了輸入:
>> myvar: $5.00
也可以輸入:
>> set 'myvar $5.00 (這里有引號(hào))
這兩種表達(dá)式的效果是相同的。大聲朗讀它們 "set the word myvar to the value $5.00"。set 字展開(kāi)了許多強(qiáng)大的可能性。
考慮:
>> myword: 'cost
== cost
>> set myword $5.00
== $5.00
最后的表達(dá)式事實(shí)上不影響字 myword 的值;它將 cost 與值 $5.00 關(guān)聯(lián)。(如果不相信我,那就輸入 "print cost"。)您可以大聲地朗讀最后一行 "set the value of myword to $5.00" 或 "set the word cost to $5.00"。由于 myword 的值是字 cost,這兩個(gè)句子表示同樣的事。
字可以設(shè)置,也可以取消設(shè)置:
>> unset 'cost
這將取消與字 cost ('cost) 關(guān)聯(lián)的值。如果在該命令之后,立即輸入 "print cost",會(huì)返回錯(cuò)誤,因?yàn)?cost 沒(méi)有值。有興趣的話(huà),嘗試輸入 "print cost"。
即使字 cost 不再有任何值,下面的代碼不會(huì)產(chǎn)生錯(cuò)誤:
>> print 'cost
cost
這是因?yàn)閳?zhí)行了命令 "print the word cost"。print 函數(shù)首先打印字的名稱(chēng),而不是它的值。' 字符防止 cost 被求值。
在自動(dòng)確定文字值的類(lèi)型方面,Rebol 很在行。有時(shí)在沒(méi)有足夠信息的情況下,Rebol 不能自動(dòng)指出特定的值是什么類(lèi)型。譬如,有這樣一種情形
,我想設(shè)置字 myemail 以便它與電子郵件地址 "drobbins" 關(guān)聯(lián)。您可以試圖輸入:
>> myemail: drobbins
不幸的是,這不起作用。解釋器沒(méi)有辦法知道 "drobbins" 是什么。Rebol 沒(méi)有找到嵌入在字符串中的 "@",所以它認(rèn)為 drobbins 是一個(gè)常規(guī)字,并對(duì)它求值。不幸的是,字 drobbins 沒(méi)有與它相關(guān)聯(lián)的值,因此出現(xiàn)這種錯(cuò)誤。
** Script Error: drobbins has no value.
** Where: myemail: drobbins
幸運(yùn)的是,有這樣一種變通方法。不是輸入:
>> myemail: drobbins
....而是輸入:
>> myemail: make email! "drobbins"
沒(méi)有錯(cuò)誤,如果查詢(xún) myemail 的類(lèi)型,我們會(huì)看到所期望的結(jié)果:
>> type? myemail
== email!
make 函數(shù)允許我們創(chuàng)建特定類(lèi)型的值。我們指定類(lèi)型,而不是依靠 Rebol 去試圖檢測(cè)我們的數(shù)據(jù)類(lèi)型。
make 函數(shù)的第一個(gè)變量應(yīng)該是數(shù)據(jù)類(lèi)型,象 money!、email! 或 url!。第二個(gè)變量應(yīng)該是包含您要?jiǎng)?chuàng)建的值的字符串。只要指定一個(gè)有效的字符串,make 將精確地創(chuàng)建您想要的值。如果指定一個(gè)無(wú)效的字符串,將會(huì)出現(xiàn)錯(cuò)誤的信息。您能夠看到 Rebol 拒絕該請(qǐng)求,其理由很充分:
>> mymoney: make money! "drobbins"
** Script Error: Invalid
argument: drobbins.
** Where: mymoney: make money! "drobbins
第六章 塊
現(xiàn)在來(lái)看一下稱(chēng)之為塊的 Rebol 構(gòu)造。在 Rebol 中,可以用塊來(lái)組織數(shù)據(jù)的集合。用 [ 和 ] 將一組值括起來(lái)創(chuàng)建塊。
>> myblock: [ this and that ]
== [this and that]
塊的靈巧之一是它們能包含數(shù)據(jù)和代碼。它們能包含不關(guān)聯(lián)值的字,并且塊的內(nèi)容是不立即求值的。譬如,Rebol 接受 myblock 的定義,即使字 this and that 沒(méi)有值。
可以在塊中插入代碼,如下:
>> mycode: [ print "foo" ]
== [print "foo"]
用方便的 do 函數(shù)來(lái)執(zhí)行該代碼:
>> do mycode
foo
這里有一個(gè)當(dāng)執(zhí)行時(shí)實(shí)際上不做任何事情的代碼塊,但它演示了 Rebol 的特性:
>> mydata: [ 1 2 3 ]
== [1 2 3]
這看上去象數(shù)據(jù)塊,但我們也能把它當(dāng)作代碼來(lái)執(zhí)行。作為代碼,這個(gè)塊包含了三個(gè)獨(dú)立的表達(dá)式,1、2 和 3。每個(gè)表達(dá)式都各自返回 1、2 和 3 的值。現(xiàn)在讓我們來(lái)執(zhí)行這個(gè)塊。
>> do mydata
== 3
正如您所見(jiàn),Rebol 返回在代碼中遇到的最后一個(gè)值。然而,整個(gè)代碼塊是按照順序來(lái)執(zhí)行的,不是僅指最后的元素。
塊可以嵌套:
>> instructions: [
[ [ remove hard drive from chassis ]
[ [ throw hard drive out window ]
[ [ scream "foo foo foo!" ]
[ ]
從第二行開(kāi)始到第五行的 [ 字符實(shí)際上是 Rebol 提示符。這是 Rebol 提醒我們正在進(jìn)入多行塊的方式。嘗試將該塊輸入解釋器,您就能看到我所說(shuō)的。
執(zhí)行結(jié)果是:== [scream "foo"]
?
我們可以訪(fǎng)問(wèn)塊中的元素:
>> myblock: [ jimmy cracked corn ]
== [jimmy cracked corn]
>> first myblock
== jimmy
>> myblock/1
== jimmy
>> last myblock
== corn
>> myblock/3
== corn
>> myblock/2
== cracked
我們也可以將帶值的字(用作鍵)配成對(duì),并用字作為塊的索引:
>> order: [
[ amount 10
[ cost $3.50
[ email
drobbins@gentoo.org
[ ]
== [
amount 10
cost $3.50
email drobbins@gentoo.org
]
>> order/email
== drobbins@gentoo.org
>> order/cost
== $3.50
注意到 order 塊包含六個(gè)獨(dú)立的字,字 amount 不與任何值關(guān)聯(lián)(我們沒(méi)有輸入 "amount:10",而是輸入 "amount 10",這是兩個(gè)毫不相關(guān)的字)。"order/cost" 稱(chēng)為路徑.
第七章 參考資料
管在本教程中我們已經(jīng)講了許多,但我們僅觸及了 Rebol 編程語(yǔ)言的表面。為了進(jìn)一步深入下去,推薦您下載 Rebol 用戶(hù)指南。它編寫(xiě)得很好,很透徹。現(xiàn)在您已經(jīng)了解了 Rebol 的基本知識(shí),也就不難理解這本書(shū)。為了讓 Rebol 自動(dòng)下載用戶(hù)指南,輸入:
>> do do http://www.rebol.com/users-guide.r
Rebol 將問(wèn)您是否在磁盤(pán)上創(chuàng)建該文件。僅需點(diǎn)擊 A(代表“所有”),“Rebol 用戶(hù)指南”將自動(dòng)地下載到您目前的工作目錄下!很簡(jiǎn)便,不是嗎?(這個(gè)被證實(shí)已經(jīng)找不到users-guide.r了)
如果想得到其他的開(kāi)發(fā)者參考資料,在常規(guī)選項(xiàng)的基礎(chǔ)上,選取 http://www.rebol.com 上開(kāi)發(fā)者部分的復(fù)選框。這里有許多(大量)郵件列表和各種各樣免費(fèi)的 Rebol 介紹性和媒體的文章。希望您喜歡這篇文章,您還要豐富您的 Rebol 知識(shí)!
posted on 2006-06-18 00:34
rd2pm 閱讀(5651)
評(píng)論(6) 編輯 收藏 所屬分類(lèi):
web develop