輸入輸出
在所有的本系列文章中,在編寫Ruby代碼時都使用了大量的Ruby標準輸出方法。其中,最為常用的是print和puts方法,有關其使用細節不再贅述。
所有這些和其它處理輸入和輸出的方法都定義於Kernel模組中。這個Kernel模組又被包含在Object類中。因此,Kernel的方法出現在每一個對象中。在輸出方面,Kernel定義了print,printf,putc和IO類和兩個子類(File和BasicSocket)-它們允許讀寫檔案和通訊端。BasicSocket是通訊端庫的一部分並且將在以後討論它。包含了FileTest模組的File類,提供了許多方法來作業系統檔案和目錄。從Kernel中使用的用於讀寫到標準輸入/輸出機制的方法被進一步重用於File執行個體中的讀寫操作。下面是一個程式碼範例-它把一些名字寫入一個建立的檔案中,然後再把這些名字讀回到一個數組中。
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
標準庫
Ruby除了提供大量內建的類和模組外,它還提供了一定數目的標準庫。這些庫不是自動地成為你可以利用的Ruby類,模組,方法的一部分。你必須先在你的檔案的頂部使用require(或load)關鍵字來使用庫中的類或模組。在前一節中,我曾提到一個庫-通訊端庫,它包含了大量的Ruby類(包括BasicSocket),以便於訪問網路服務。但是在Ruby下載中一同提供了一整套其它的庫。你可以查看一下你的Ruby下載中的lib目錄,這個目錄下應該存在大量的你的Ruby程式需要使用的庫。
有關這些庫的不好的一點是,沒有大量的有關於這些類的參考文檔。你可以在網站http://www.ruby-doc.org/stdlib/上找到一系列標準庫及其包含類和模組的檔案。即使是這些文檔也指出:
"你需要明白,在表格中粗體的庫具有良好的文檔,而斜體的庫沒有文檔。"
這就是Ruby的現狀。你可能想說,Ruby是一個不可思議地豐富而有力的語言並且內建了許多構建我們的應用程式需要的功能,但是文檔仍然有點不足。還好,現在已經有不少的人在努力改進Ruby的文檔和支援。現在有不少的Ruby論壇已經倔起,並且隨著每一個新版本的發行,文檔都將有一定的改進-當然,這也是最近它備受關注的結果。然而,協助文檔仍然會成為這種語言挫敗人心的一個因素。