posts - 23,comments - 66,trackbacks - 0
          今日不小心走進(jìn)了圖書館,本來想借一本Python編程的書,結(jié)果偶然看到有一本《Java夜未眠》沒有被借走,翻了幾頁感覺寫的不錯(cuò),再一看是蔡學(xué)鏞著,原來是蔡老師的書,索性借回來讀,發(fā)現(xiàn)蔡老師在書里邊拿出一個(gè)段落來講一種名叫Rebol的語言,號(hào)稱是互聯(lián)網(wǎng)語言,既然是互聯(lián)網(wǎng)語言,我就感興趣了,在IBM developerWorks上看了一篇入門教程,覺得這個(gè)語言跟其他語言很不一樣,索性摘錄下來跟有興趣的朋友分享。
          紅字部分是我的標(biāo)注。
          -----------------------------------------------------

          Rebol入門教程
          [from ibm developerWoks]
          第一章為教程提示 略去

          第二章 介紹Rebol

          Rebol 的描述


          如何描述 Rebol 語言?革命性的,功能強(qiáng)大的,靈活的 -- 而且是不同的。事實(shí)上,Rebol 可能不象您以前用的任何一種語言。在用一種直接的同時(shí)也是“非常規(guī)”的方式來設(shè)計(jì)解決實(shí)際編程任務(wù)方面,Rebol 為那些想在腳本語言中尋求更多的編程者提供了一個(gè)嶄新的編程工具箱。

          對(duì)于我們開發(fā)者而言,學(xué)習(xí) Rebol 可以給予我們新的活力和富有挑戰(zhàn)性。在承諾有些完全不同的同時(shí),Rebol 還使用了新的編程模式,在與大多數(shù)傳統(tǒng)語言使用的有些相似的同時(shí),又是“如此不同”以至于經(jīng)驗(yàn)豐富的開發(fā)者都感到困惑。

          Rebol 特性


          在許多方面 Rebol 是與眾不同的。它使用自然的類英語語法,且支持許多數(shù)據(jù)類型,象 URL 和電子郵件地址。Rebol 是一種支持因特網(wǎng)的語言;使用 Rebol, 可以用一行簡(jiǎn)單的代碼實(shí)現(xiàn)下載 Web 頁面或者發(fā)送一條電子郵件消息。不但如此,Rebol 還提供稱之為“dialecting”的高級(jí)功能,此功能允許您創(chuàng)建用于您自己特殊目的的子語言,特別為使用 Rebol 的任務(wù)定制。

          然而,在您接觸這些招人喜愛的特性之前,掌握 Rebol 的基礎(chǔ)知識(shí)是很重要的。這就是在本教程中我們將要做的。在您熟練掌握這些基礎(chǔ)知識(shí)后,我將給您展示一些在線資源,使您了解 Rebol 的更先進(jìn)特性。

          安裝

          從訪問 http://www.rebol.com 來開始使用 Rebol。在本教程中,我們將使用 Rebol 的基本版本 -- 稱為 Rebol/Core,它適用于大約 40 種不同平臺(tái)。雖然我們僅涉及 Linux 的安裝,但本教程中與 Rebol 相聯(lián)系的部分適應(yīng)于每個(gè)平臺(tái)。
          下載 Rebol/Core

          進(jìn)入 http://www.rebol.com 后,選擇開發(fā)者部分,然后單擊“Downloads”。選擇可用于您平臺(tái)上的 Rebol/Core 的最新版本。目前,有以下一些版本可用:libc5、libc6 x86 Linux、Linux/Alpha、Linux/PPC、Linux/Sparc、UltraSparc、Linux/StrongARM、 MIPS 和 68K! 很顯然,在 Rebol 的移植方面 ,其開發(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í)行文件。

          啟動(dòng) Rebol

          輸入 $ ./rebol

          啟動(dòng) Rebol。您將看到類似于以下情況:

          配置 Rebol

          在這里,您將要配置系統(tǒng)中網(wǎng)絡(luò)方面的選項(xiàng),包括輸入您的電子郵件地址、SMTP 和 POP 服務(wù)器以及網(wǎng)絡(luò)代理的設(shè)置。由于 Rebol 是支持因特網(wǎng)的語言,它需要這些設(shè)置選項(xiàng)以訪問因特網(wǎng)。

          這里新的版本(2.6.2)已經(jīng)不需要了,只有執(zhí)行do setup.r才會(huì)進(jìn)入配置過程

          在你完成配置步驟后,Rebol 會(huì)詢問在當(dāng)前目錄是否允許創(chuàng)建“user.r”文件。您的設(shè)置將存儲(chǔ)在這個(gè)文件中。繼續(xù),并說 "Y"。這是 Rebol 的內(nèi)置安全性支持的一個(gè)例子。

          下次啟動(dòng) Rebol 時(shí),記住要從“rebol”所在目錄啟動(dòng)。這樣的話,Rebol 將會(huì)找到 user.r 文件,并且自動(dòng)裝入網(wǎng)絡(luò)設(shè)置。

          第一個(gè)提示符


          在完成配置后,您處在交互式 Rebol 解釋器內(nèi)部。Rebol 提示符類似于:

          >>

          繼續(xù),輸入“help”并敲入 Enter 鍵來查看 Rebol 的內(nèi)置幫助頁。“help”命令也能接受變量。嘗試輸入“helpprint ”。您將在屏幕上看到 print 函數(shù)的摘要。

          Rebol -- what?
          精確地講,有哪些可用的 Rebol 函數(shù)?為了查看完整的列表,在提示符下輸入"what":
          >>what

          "what" 命令顯示了一個(gè)所有全局定義的函數(shù)列表。

          退出 Rebol

          最必不可少的 Rebol 命令之一 -- quit。如果要離開解釋器,簡(jiǎn)單地輸入:
          >> quit

          ....您將返回到 shell 提示符。既然知道了如何進(jìn)入和退出解釋器,現(xiàn)在該是熟悉語言本身了。

          第三章 Rebol-語言


          介紹數(shù)據(jù)類型

          Rebol 的出色之一是它有大量?jī)?nèi)置的數(shù)據(jù)類型,這些已設(shè)計(jì)成反映您在現(xiàn)實(shí)世界中發(fā)現(xiàn)的數(shù)值,如電子郵件地址、URL、日期、時(shí)間和貨幣值。讓我們開始熟悉它們。

          在 Rebol 提示符下,輸入:


          >> drobbins@gentoo.org
          == drobbins@gentoo.org

          這個(gè)電子郵件地址送給解釋器后,Rebol 僅把它的重復(fù)返還回來。這是 Rebol 的標(biāo)準(zhǔn)處理方式 -- 當(dāng)文字值輸入給解釋器時(shí),它將該值重復(fù)返回。現(xiàn)在您也許想知道 drobbins@gentoo.org 是什么類型的值。大多數(shù)語言將電子郵件地址作為字符串處理,所以也可能猜想 Rebol 亦是如此。然而,您會(huì)驚奇地發(fā)現(xiàn) Rebol 所作的比這更有用。

          探索數(shù)據(jù)類型

          為了看 drobbins@gentoo.org 是什么數(shù)據(jù)類型,輸入:


          >> type? drobbins@gentoo.org
          == email!

          字 type? 是接受變量的函數(shù),它返回變量的數(shù)據(jù)類型。正如您所見,Rebol 事實(shí)上認(rèn)識(shí) drobbins@gentoo.org 是一個(gè)電子郵件地址 -- 很不可思議!我們不需要特殊的語法去指定電子郵件地址;Rebol 可以將該值識(shí)別成電子郵件地址,因?yàn)樗⒁獾角度氲?@"字符。

          讓我們繼續(xù)。輸入


          >> type? $5.00
          == money!

          同樣,Rebol 認(rèn)識(shí) $5.00 表示貨幣值。

          您可能想知道為什么在 email!和 mony!后面有驚嘆號(hào)。答案很簡(jiǎn)單 -- 所有數(shù)據(jù)類型名稱以一個(gè)驚嘆號(hào)結(jié)尾。除此之外,查詢屬性的函數(shù)以問號(hào)標(biāo)記結(jié)尾(如 type? 函數(shù))。Rebol 通過構(gòu)造類似于傳統(tǒng)書寫語言(如 English)的語法,來使其更具用戶友好性。


          許多數(shù)據(jù)類型


          試著輸入以下 Rebol 表達(dá)式,來看 Rebol 所識(shí)別的數(shù)據(jù)類型的每個(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 語言的變量能代表數(shù)據(jù)一樣,Rebol 有它自己的變量,稱之為字。這里有一個(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)系起來是很普遍的,創(chuàng)建一個(gè)字/值對(duì)。字也是不區(qū)分大小寫的,所以輸入 myval 與 MyVal 是一樣的

          沒有值的字


          現(xiàn)在嘗試輸入任何舊字到解釋器。會(huì)出現(xiàn)如下錯(cuò)誤信息:

          >> foo
          ** Script Error: foo has no value.
          ** Where: foo

          缺省情況下,Rebol 會(huì)自動(dòng)對(duì)所有字求值。通過"求值"Rebol 將自動(dòng)用字所關(guān)聯(lián)的值來替換字。如果字沒有與值關(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 的值沒有更改。

          Rebol 的描述


          正如您所見,Rebol 字充當(dāng)了如 C 和 C++ 語言中變量的功能。您可能甚至想知道為什么 Rebol 的開發(fā)者稱 Rebol 的變量為字,而不是遵循標(biāo)準(zhǔn)的術(shù)語。問得好!這正是本教程下面要講的,我將演示 Rebol 字與標(biāo)準(zhǔn) C 變量所不同的獨(dú)一無二的特征。

          字的基本知識(shí) -- 總結(jié)


          當(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ì)看到。

          數(shù)學(xué)運(yùn)算符


          當(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 中寫數(shù)學(xué)表達(dá)式時(shí),您需要知道兩件重要事情。首先,在值與運(yùn)算符之間要放空格;解釋器不能正確分析 1+7 ,而 1 + 7 可以。其次,Rebol 從左到右對(duì)算術(shù)表達(dá)式求值。它沒有象 C 中特殊的運(yùn)算符優(yōu)先權(quán)。如果您想顯式的表明算術(shù)求值的順序,可以用括號(hào)將表達(dá)式括起。(這一點(diǎn)要注意哦


          前綴運(yù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

          通過在日期上加上或減去一個(gè)整數(shù),可以偏移該日期一定天數(shù)。譬如,可以表示兩周前的日期:


          >> print now + 14
          14-Oct-2000/22:43:13-6:00
          用now: 3可以把now變成3,如果要恢復(fù)過來就不知道怎么做了,不過幸好我前邊用timenow: now + 3,然后又用 now: timenow? - 3 恢復(fù)過來了,好險(xiǎn)啊,吼吼

          許許多多數(shù)據(jù)類型


          Rebol 有相當(dāng)多的數(shù)據(jù)類型;我們這里沒有篇幅來涵蓋所有數(shù)據(jù)類型;這里有一個(gè)數(shù)據(jù)類型的部分列表:整數(shù)、小數(shù)、時(shí)間、日期、貨幣、邏輯、字符、空值、字符串、二進(jìn)制、電子郵件、文件、url、issue、元組、標(biāo)記、塊、散列、列表、路徑和字。

          許多數(shù)據(jù)類型都有它自己特殊的運(yùn)算符和函數(shù),且數(shù)據(jù)類型可以以無數(shù)種方式進(jìn)行交互。譬如,您可以從數(shù)據(jù)中抽取時(shí)間;附加到字符串;打開、關(guān)閉和寫入文件。在 Rebol 用戶手冊(cè)(更詳細(xì)信息請(qǐng)參閱 參考資料)詳細(xì)描述了有關(guān)所有這些數(shù)據(jù)類型和它們相關(guān)聯(lián)的運(yùn)算符和函數(shù).

          第五章 字和表達(dá)式

          Rebol 的描述


          以前,當(dāng)對(duì) myemail 求值時(shí),Rebol 解釋器將"==drobbins@gentoo.org"寫到屏幕上。當(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 的值輸出到屏幕,而不是返回值本身。

          探測(cè)
          有時(shí)想將字的值打印到屏幕,但也想在字的值上執(zhí)行附加的處理。譬如,可以輸入:

          >> print myemail
          drobbins@gentoo.org
          >> type? myemail
          ==
          email!

          這里有一些訣竅,Rebol 提供了一種更清晰的方式來立即執(zhí)行這兩個(gè)步驟...

          簡(jiǎn)單地輸入:


          >> type? probe myemail
          drobbins@gentoo.org
          == email!

          probe 字期望單個(gè)字或塊(后面將講述)作為變量。它將打印該字的值,并返回該字的值。在這個(gè)示例中,type? word 隨后對(duì)該值求值,顯示 drobbins@gentoo.org 值的類型。可以認(rèn)為 probe 是標(biāo)準(zhǔn) UNIX "tee"命令的 Rebol 版。

          文字字


          大多數(shù)時(shí)間,當(dāng)我們引用 Rebol 的字時(shí),Rebol 能做我們想做的 -- 對(duì)字求值,將值傳給函數(shù)或在交互式解釋器上顯示該值。然而,有時(shí)這并沒有精確到我們想要做的。有時(shí)當(dāng)我們想引用字本身,而不是它所關(guān)聯(lián)的字。對(duì)于這種情形,Rebol 提供了一個(gè)方便的文字字語法。看一下這個(gè)示例:


          >> type? myemail
          == email!
          >> type? 'myemail (只要是以單引號(hào)開頭的,Rebol都認(rèn)為是字(word)
          == word!
          朗讀它

          為了幫助您掌握文字的字的概念,您要大聲地說(用嘴,用 English 或您熟悉的語言!)代碼所正在做的。是的,這意味著您盯著監(jiān)視器時(shí)要自言自語。不要害怕 -- 如果您對(duì)這種事情感到很困窘,那您就假裝是 Jean Luc Picard (USS Enterprise 的 Captain),您正在大聲對(duì)計(jì)算機(jī)發(fā)命令。

          這個(gè)練習(xí)的關(guān)鍵是,當(dāng)您看到象這樣寫的字:


          foo

          ....您應(yīng)該說"foo"。

          當(dāng)您看到象這樣寫的字:


          'foo

          ....您應(yīng)該說"the word foo"。

          第一條命令

          這里有一個(gè)您已經(jīng)輸入到 Rebol 解釋器的命令:

          >> myemail: drobbins@gentoo.org

          如果您是 Jean Luc Picard,您也不會(huì)使用和計(jì)算機(jī)鍵盤一樣過時(shí)的東西來輸入這個(gè)命令。事實(shí)上,您會(huì)大聲地說(提示):

          "Computer,associate the word myemail with the valuedrobbins@gentoo.org."

          第二條命令


          作為 Jean Luc Picard,不要用鍵盤輸入這些怪異的東西,小心會(huì)得腕骨綜合癥


          >> myword: 'myemail

          ....您要從專門設(shè)計(jì)的 Captain 椅起來,發(fā)號(hào)施令:

          "Associate the word myword with the word myemail"

          注意到不同嗎?有點(diǎn)微妙差異但很重要。前綴 ' 意味著您正在談?wù)?the word。沒有 ',意味著正在談?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

          然而,這沒有什么意義,因?yàn)閮H輸入字本身也能實(shí)現(xiàn)同樣的結(jié)果:


          >> myemail
          == drobbins@gentoo.org

          字關(guān)聯(lián)

          字與值相關(guān)聯(lián)有另一種方法。除了輸入:

          >> myvar: $5.00

          也可以輸入:

          >> set 'myvar $5.00 (這里有引號(hào))

          這兩種表達(dá)式的效果是相同的。大聲朗讀它們 "set the word myvar to the value $5.00"。set 字展開了許多強(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è)置,也可以取消設(shè)置:


          >> unset 'cost

          這將取消與字 cost ('cost) 關(guān)聯(lián)的值。如果在該命令之后,立即輸入 "print cost",會(huì)返回錯(cuò)誤,因?yàn)?cost 沒有值。有興趣的話,嘗試輸入 "print cost"。

          即使字 cost 不再有任何值,下面的代碼不會(huì)產(chǎn)生錯(cuò)誤:


          >> print 'cost

          cost

          這是因?yàn)閳?zhí)行了命令 "print the word cost"。print 函數(shù)首先打印字的名稱,而不是它的值。' 字符防止 cost 被求值。

          幫助 Rebol 解決

          在自動(dòng)確定文字值的類型方面,Rebol 很在行。有時(shí)在沒有足夠信息的情況下,Rebol 不能自動(dòng)指出特定的值是什么類型。譬如,有這樣一種情形,我想設(shè)置字 myemail 以便它與電子郵件地址 "drobbins" 關(guān)聯(lián)。您可以試圖輸入:
          >> myemail: drobbins

          不幸的是,這不起作用。解釋器沒有辦法知道 "drobbins" 是什么。Rebol 沒有找到嵌入在字符串中的 "@",所以它認(rèn)為 drobbins 是一個(gè)常規(guī)字,并對(duì)它求值。不幸的是,字 drobbins 沒有與它相關(guān)聯(lián)的值,因此出現(xiàn)這種錯(cuò)誤。

          ** Script Error: drobbins has no value.
          ** Where: myemail: drobbins

          幸運(yùn)的是,有這樣一種變通方法。不是輸入:

          >> myemail: drobbins

          ....而是輸入:

          >> myemail: make email! "drobbins"

          沒有錯(cuò)誤,如果查詢 myemail 的類型,我們會(huì)看到所期望的結(jié)果:

          >> type? myemail
          == email!

          make 函數(shù)允許我們創(chuàng)建特定類型的值。我們指定類型,而不是依靠 Rebol 去試圖檢測(cè)我們的數(shù)據(jù)類型。

          使它起作用

          make 函數(shù)的第一個(gè)變量應(yīng)該是數(shù)據(jù)類型,象 money!、email! 或 url!。第二個(gè)變量應(yīng)該是包含您要?jiǎng)?chuàng)建的值的字符串。只要指定一個(gè)有效的字符串,make 將精確地創(chuàng)建您想要的值。如果指定一個(gè)無效的字符串,將會(huì)出現(xiàn)錯(cuò)誤的信息。您能夠看到 Rebol 拒絕該請(qǐng)求,其理由很充分:
          >> mymoney: make money! "drobbins"
          ** Script Error: Invalid
          argument: drobbins.
          ** Where: mymoney: make money! "drobbins

          第六章 塊


          構(gòu)建塊


          現(xiàn)在來看一下稱之為塊的 Rebol 構(gòu)造。在 Rebol 中,可以用塊來組織數(shù)據(jù)的集合。用 [ 和 ] 將一組值括起來創(chuàng)建塊。


          >> myblock: [ this and that ]
          == [this and that]

          塊的靈巧之一是它們能包含數(shù)據(jù)和代碼。它們能包含不關(guān)聯(lián)值的字,并且塊的內(nèi)容是立即求值的。譬如,Rebol 接受 myblock 的定義,即使字 this and that 沒有值。


          代碼塊

          可以在塊中插入代碼,如下:

          >> mycode: [ print "foo" ]
          == [print "foo"]

          用方便的 do 函數(shù)來執(zhí)行該代碼:

          >> do mycode
          foo


          塊特性


          這里有一個(gè)當(dāng)執(zhí)行時(shí)實(shí)際上不做任何事情的代碼塊,但它演示了 Rebol 的特性:


          >> mydata: [ 1 2 3 ]
          == [1 2 3]

          這看上去象數(shù)據(jù)塊,但我們也能把它當(dāng)作代碼來執(zhí)行。作為代碼,這個(gè)塊包含了三個(gè)獨(dú)立的表達(dá)式,1、2 和 3。每個(gè)表達(dá)式都各自返回 1、2 和 3 的值。現(xiàn)在讓我們來執(zhí)行這個(gè)塊。

          >> do mydata
          == 3

          正如您所見,Rebol 返回在代碼中遇到的最后一個(gè)值。然而,整個(gè)代碼塊按照順序來執(zhí)行的,不是僅指最后的元素。


          嵌套塊


          塊可以嵌套:


          >> instructions: [
          [ [ remove hard drive from chassis ]
          [ [ throw hard drive out window ]
          [ [ scream "foo foo foo!" ]
          [ ]

          從第二行開始到第五行的 [ 字符實(shí)際上是 Rebol 提示符。這是 Rebol 提醒我們正在進(jìn)入多行塊的方式。嘗試將該塊輸入解釋器,您就能看到我所說的。

          執(zhí)行結(jié)果是:== [scream "foo"]
          ?


          訪問塊


          我們可以訪問塊中的元素:


          >> 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)(我們沒有輸入 "amount:10",而是輸入 "amount 10",這是兩個(gè)毫不相關(guān)的字)。"order/cost" 稱為路徑.

          第七章 參考資料

          獲取用戶指南

          管在本教程中我們已經(jīng)講了許多,但我們僅觸及了 Rebol 編程語言的表面。為了進(jìn)一步深入下去,推薦您下載 Rebol 用戶指南。它編寫得很好,很透徹。現(xiàn)在您已經(jīng)了解了 Rebol 的基本知識(shí),也就不難理解這本書。為了讓 Rebol 自動(dòng)下載用戶指南,輸入:


          >> do do http://www.rebol.com/users-guide.r

          Rebol 將問您是否在磁盤上創(chuàng)建該文件。僅需點(diǎn)擊 A(代表“所有”),“Rebol 用戶指南”將自動(dòng)地下載到您目前的工作目錄下!很簡(jiǎn)便,不是嗎?(這個(gè)被證實(shí)已經(jīng)找不到users-guide.r了

          其它參考資料
          如果想得到其他的開發(fā)者參考資料,在常規(guī)選項(xiàng)的基礎(chǔ)上,選取 http://www.rebol.com 上開發(fā)者部分的復(fù)選框。這里有許多(大量)郵件列表和各種各樣免費(fèi)的 Rebol 介紹性和媒體的文章。

          希望您喜歡這篇文章,您還要豐富您的 Rebol 知識(shí)!

          posted on 2006-06-18 00:34 rd2pm 閱讀(5655) 評(píng)論(6)  編輯  收藏 所屬分類: web develop

          FeedBack:
          # re: Rebol語言入門教程
          2006-11-19 14:00 | 有點(diǎn)興趣
          請(qǐng)問那里有REBOL的中文教程?有的話請(qǐng)發(fā)mathmsconfig@163.com謝謝!  回復(fù)  更多評(píng)論
            
          # re: Rebol語言入門教程
          2008-04-17 21:54 | albertlee
          今天開始看rebol,very cool, 比 lisp 更簡(jiǎn)單方便,而又保留了lisp的精髓,good  回復(fù)  更多評(píng)論
            
          # re: Rebol語言入門教程
          2008-06-18 22:53 | hgy
          很不錯(cuò)的語言,很有性格!我會(huì)學(xué)習(xí)的!  回復(fù)  更多評(píng)論
            
          # re: Rebol語言入門教程
          2008-06-29 18:29 | 趙文鵬
          就是不知道哪有這方面的書...英文的看其好惱火..
          很喜歡這門語言的 ...  回復(fù)  更多評(píng)論
            
          # re: Rebol語言入門教程
          2008-07-10 10:52 | dognicole
          不會(huì)有什么前途的語言,表面看上去是很爽,web網(wǎng)絡(luò)應(yīng)用是它的最大賣點(diǎn)也是它的最大敗筆,居然能夠連接數(shù)據(jù)庫的版本要美元,這點(diǎn)不改變永遠(yuǎn)推廣不開,太急功近利了,這個(gè)語言的開發(fā)者想賺錢應(yīng)該好好學(xué)習(xí)php搞zend的思路,否則很快就會(huì)自己把自己扼殺在搖籃了  回復(fù)  更多評(píng)論
            
          # re: Rebol語言入門教程
          2010-11-05 22:52 | ff
          這不就是lisp的一種方言嗎?  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          主站蜘蛛池模板: 会理县| 历史| 福清市| 三门县| 阿克苏市| 常宁市| 北碚区| 竹溪县| 淮滨县| 甘南县| 保德县| 邮箱| 茂名市| 麻城市| 满城县| 财经| 夏津县| 萍乡市| 纳雍县| 开化县| 台中市| 静安区| 武山县| 石城县| 蒙山县| 济阳县| 万宁市| 库伦旗| 太仓市| 苍山县| 巨野县| 从化市| 淮滨县| 汝南县| 资兴市| 吉水县| 盐城市| 台中县| 乌兰县| 信阳市| 吴桥县|