輸入輸出
在所有的本系列文章中,在編寫Ruby代碼時(shí)都使用了大量的Ruby標(biāo)準(zhǔn)輸出方法。其中,最為常用的是print和puts方法,有關(guān)其使用細(xì)節(jié)不再贅述。
所有這些和其它處理輸入和輸出的方法都定義于Kernel模塊中。這個(gè)Kernel模塊又被包含在Object類中。因此,Kernel的方法出現(xiàn)在每一個(gè)對(duì)象中。在輸出方面,Kernel定義了print,printf,putc和IO類和兩個(gè)子類(File和BasicSocket)-它們允許讀寫文件和套接字。BasicSocket是套接字庫的一部分并且將在以后討論它。包含了FileTest模塊的File類,提供了許多方法來操作系統(tǒng)文件和目錄。從Kernel中使用的用于讀寫到標(biāo)準(zhǔn)輸入/輸出機(jī)制的方法被進(jìn)一步重用于File實(shí)例中的讀寫操作。下面是一個(gè)代碼示例-它把一些名字寫入一個(gè)新建的文件中,然后再把這些名字讀回到一個(gè)數(shù)組中。
customers=%w[Jim?Kevin?Davin?Andrew] outFile?=?File.new("c:\\examples\\test\\customers.txt",?"w") customers.each{|customer|?outFile.puts(customer)} outFile.close inFile=?File.new("c:\\examples\\customers.txt",?"r") readCustomers=inFile.readlines readCustomers.each{|customer|?puts?customer} inFile.close |
標(biāo)準(zhǔn)庫
Ruby除了提供大量內(nèi)置的類和模塊外,它還提供了一定數(shù)目的標(biāo)準(zhǔn)庫。這些庫不是自動(dòng)地成為你可以利用的Ruby類,模塊,方法的一部分。你必須先在你的文件的頂部使用require(或load)關(guān)鍵字來使用庫中的類或模塊。在前一節(jié)中,我曾提到一個(gè)庫-套接字庫,它包含了大量的Ruby類(包括BasicSocket),以便于訪問網(wǎng)絡(luò)服務(wù)。但是在Ruby下載中一同提供了一整套其它的庫。你可以查看一下你的Ruby下載中的lib目錄,這個(gè)目錄下應(yīng)該存在大量的你的Ruby程序需要使用的庫。
有關(guān)這些庫的不好的一點(diǎn)是,沒有大量的有關(guān)于這些類的參考文檔。你可以在網(wǎng)站http://www.ruby-doc.org/stdlib/上找到一系列標(biāo)準(zhǔn)庫及其包含類和模塊的文件。即使是這些文檔也指出:
"你需要明白,在表格中粗體的庫具有良好的文檔,而斜體的庫沒有文檔。"
這就是Ruby的現(xiàn)狀。你可能想說,Ruby是一個(gè)不可思議地豐富而有力的語言并且內(nèi)置了許多構(gòu)建我們的應(yīng)用程序需要的功能,但是文檔仍然有點(diǎn)不足。還好,現(xiàn)在已經(jīng)有不少的人在努力改進(jìn)Ruby的文檔和支持。現(xiàn)在有不少的Ruby論壇已經(jīng)倔起,并且隨著每一個(gè)新版本的發(fā)行,文檔都將有一定的改進(jìn)-當(dāng)然,這也是最近它備受關(guān)注的結(jié)果。然而,幫助文檔仍然會(huì)成為這種語言挫敗人心的一個(gè)因素。