<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23,comments - 66,trackbacks - 0
    今日不小心走進(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 的描述


    如何描述 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 特性


    在許多方面 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)。
    下載 Rebol/Core

    進(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í)行文件。

    啟動(dòng) Rebol

    輸入 $ ./rebol

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

    配置 Rebol

    在這里,您將要配置系統(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è)置。

    第一個(gè)提示符


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

    >>

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

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

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

    退出 Rebol

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

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

    第三章 Rebol-語(yǔ)言


    介紹數(shù)據(jù)類(lèi)型

    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 所作的比這更有用。

    探索數(shù)據(jù)類(lèi)型

    為了看 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ù)友好性。


    許多數(shù)據(jù)類(lèi)型


    試著輸入以下 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 是一樣的

    沒(méi)有值的字


    現(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)有更改。

    Rebol 的描述


    正如您所見(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ú)二的特征。

    字的基本知識(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 中寫(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)要注意哦


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

    通過(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)啊,吼吼

    許許多多數(shù)據(jù)類(lèi)型


    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á)式

    Rebol 的描述


    以前,當(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 的值輸出到屏幕,而不是返回值本身。

    探測(cè)
    有時(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í),我們能夠精確地控制它了。


    無(wú)事空忙


    十分感謝 do 函數(shù),我們也可以輸入:


    >> do 'myemail
    == drobbins@gentoo.org

    然而,這沒(méi)有什么意義,因?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 字展開(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è)置,也可以取消設(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 被求值。

    幫助 Rebol 解決

    在自動(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

    第六章 塊


    構(gòu)建塊


    現(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)塊


    我們可以訪(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)為路徑.

    第七章 參考資料

    獲取用戶(hù)指南

    管在本教程中我們已經(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

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

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


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

    主站蜘蛛池模板: 韩国免费一级成人毛片| 直接进入免费看黄的网站| 亚洲最大在线观看| 亚洲高清在线mv| 亚洲精品福利视频| 久久久久久亚洲AV无码专区| 亚洲男人的天堂在线播放| 亚洲国产精品无码久久SM| 午夜亚洲www湿好大| 亚洲一区影音先锋色资源| 亚洲妓女综合网99| 亚洲熟妇丰满xxxxx| 亚洲AV无码一区二区三区牲色 | 亚洲高清无码专区视频| 免费很黄很色裸乳在线观看| 亚洲 自拍 另类小说综合图区| jizzjizz亚洲| 亚洲国产第一站精品蜜芽| 亚洲免费在线播放| 中文字幕在线日亚洲9| 女人18毛片a级毛片免费| 德国女人一级毛片免费| 成人亚洲综合天堂| 亚洲精品国产精品乱码不99| 亚洲AV无码一区东京热久久| 亚洲日产2021三区| 亚洲AV无码一区二区三区网址| 又大又硬又粗又黄的视频免费看| 好吊色永久免费视频大全| 18以下岁毛片在免费播放| 午夜a级成人免费毛片| 亚洲精品成人区在线观看| 亚洲大尺度无码无码专区| 亚洲午夜精品在线| 国产成人亚洲毛片| 国产激情免费视频在线观看| 日韩一区二区a片免费观看| 亚洲成av人在片观看| 亚洲AV日韩AV永久无码久久| 亚洲综合精品成人| 中文在线免费视频|