ruby 雜項(xiàng)
更新時(shí)間:2007年11月24日 14:24:51 作者:
本章處理一些實(shí)際問題.
語句定界符
有些語言需要一定類型的標(biāo)點(diǎn),一般會(huì)是分號(hào)(;)來結(jié)束程序的每一語句.Ruby卻采用了shell里的sh和csh的方便做法.一行中的多個(gè)語句由分號(hào)分開,但在行尾分號(hào)卻并不需要;一個(gè)換行被看作一個(gè)分號(hào).如果行以反斜杠(\)結(jié)束,隨后的換行將忽略;這就允許你的單個(gè)邏輯行可以跨越數(shù)行.
注釋
為什么寫注釋?雖然良好的代碼可自成文檔,但那種自以為別人能看懂并按你的方式很快去理解的想法是錯(cuò)誤的.除此之外,你自己在離開數(shù)天后也會(huì)是另一個(gè)人;一段時(shí)間后我們忘了我們還未修補(bǔ)或增強(qiáng)程序中的哪些部分,你會(huì)說,我知道我寫了這個(gè)的,但我究竟寫的是些什么?
一些有經(jīng)驗(yàn)的程序員會(huì)相當(dāng)正確地指出,矛盾的和過期的注釋比沒有強(qiáng).當(dāng)然,有了注釋并不意味著代碼的可讀性;如果你的代碼不清晰,它也許是多蟲的.當(dāng)你學(xué)習(xí)Ruby的時(shí)候,你會(huì)發(fā)現(xiàn)自己需要更多的注釋;然后當(dāng)你可以通過更簡單,優(yōu)雅,可讀的代碼來表達(dá)思想時(shí),它們就會(huì)減少.
Ruby遵從一些普遍的書寫習(xí)慣,用井號(hào)(#)表示注釋的開始.跟在#號(hào)后面直到#號(hào)這行結(jié)束為止的代碼都將被解釋器忽略.
同時(shí),為了方便寫大塊的注釋, Ruby解釋器省略以"=begin"和"=end"開始的行中間的一切.
#!/usr/bin/env ruby
=begin
**********************************************************************
This is a comment block, something you write for the benefit of
human readers (including yourself). The interpreter ignores it.
There is no need for a '#' at the start of every line.
**********************************************************************
=end
組織你的代碼
Ruby讀到什么就處理什么.沒有編譯處理;如果有什么還沒讀到,就被簡單地認(rèn)為未定義.
# this results in an "undefined method" error:
print successor(3),"\n"
def successor(x)
x + 1
end
這并不是像一開始認(rèn)為的那樣,強(qiáng)迫你以從上至下的方式組織你的代碼.只要你確保其在調(diào)用前將被定義,當(dāng)解釋器遇到一個(gè)方法定義時(shí),它能安全地接受暫未定義的引用.
# Conversion of fahrenheit to celsius, broken
# down into two steps.
def f_to_c(f)
scale(f - 32.0) # This is a forward reference, but it's okay.
end
def scale(x)
x * 5.0 / 9.0
end
printf "%.1f is a comfortable temperature.\n", f_to_c(72.3)
所以,一方面看起來比使用Perl或Java要稍稍不方便一些,但卻沒有寫C那么嚴(yán)格(要求你永遠(yuǎn)維持所指的部分排序).將最高層的代碼放在源文件的最后總是可行的.即使這樣也比看見時(shí)要好的多.一個(gè)明智而無痛苦的好辦法是將main定義在文件頂端,再在底端調(diào)用它.
#!/usr/bin/env ruby
def main
# Express the top level logic here...
end
# ... put support code here, organized as you see fit ...
main # ... and start execution here.
Ruby也提供了將復(fù)雜程序分割為可讀,可重用,邏輯相關(guān)的大塊的工具.我們已看到用 include 來訪問模塊.你將發(fā)現(xiàn) load 和 require 也很有用.load的作用類似于文件的復(fù)制加粘貼(和C的#include處理器指令相似).require更復(fù)雜,僅在需要時(shí)才加載,而且最多加載一次.load和require還有其它一些區(qū)別;在語言手冊,FAQ中可找到更多信息.
就是這些了...
這個(gè)教程應(yīng)該足夠幫助你開始編寫Ruby程序了.隨著問題的深入,你可以深入?yún)⒖际謨?FAQ和庫參考也是很重要的資源.
祝好運(yùn),編程快樂!
語句定界符
有些語言需要一定類型的標(biāo)點(diǎn),一般會(huì)是分號(hào)(;)來結(jié)束程序的每一語句.Ruby卻采用了shell里的sh和csh的方便做法.一行中的多個(gè)語句由分號(hào)分開,但在行尾分號(hào)卻并不需要;一個(gè)換行被看作一個(gè)分號(hào).如果行以反斜杠(\)結(jié)束,隨后的換行將忽略;這就允許你的單個(gè)邏輯行可以跨越數(shù)行.
注釋
為什么寫注釋?雖然良好的代碼可自成文檔,但那種自以為別人能看懂并按你的方式很快去理解的想法是錯(cuò)誤的.除此之外,你自己在離開數(shù)天后也會(huì)是另一個(gè)人;一段時(shí)間后我們忘了我們還未修補(bǔ)或增強(qiáng)程序中的哪些部分,你會(huì)說,我知道我寫了這個(gè)的,但我究竟寫的是些什么?
一些有經(jīng)驗(yàn)的程序員會(huì)相當(dāng)正確地指出,矛盾的和過期的注釋比沒有強(qiáng).當(dāng)然,有了注釋并不意味著代碼的可讀性;如果你的代碼不清晰,它也許是多蟲的.當(dāng)你學(xué)習(xí)Ruby的時(shí)候,你會(huì)發(fā)現(xiàn)自己需要更多的注釋;然后當(dāng)你可以通過更簡單,優(yōu)雅,可讀的代碼來表達(dá)思想時(shí),它們就會(huì)減少.
Ruby遵從一些普遍的書寫習(xí)慣,用井號(hào)(#)表示注釋的開始.跟在#號(hào)后面直到#號(hào)這行結(jié)束為止的代碼都將被解釋器忽略.
同時(shí),為了方便寫大塊的注釋, Ruby解釋器省略以"=begin"和"=end"開始的行中間的一切.
#!/usr/bin/env ruby
=begin
**********************************************************************
This is a comment block, something you write for the benefit of
human readers (including yourself). The interpreter ignores it.
There is no need for a '#' at the start of every line.
**********************************************************************
=end
組織你的代碼
Ruby讀到什么就處理什么.沒有編譯處理;如果有什么還沒讀到,就被簡單地認(rèn)為未定義.
# this results in an "undefined method" error:
print successor(3),"\n"
def successor(x)
x + 1
end
這并不是像一開始認(rèn)為的那樣,強(qiáng)迫你以從上至下的方式組織你的代碼.只要你確保其在調(diào)用前將被定義,當(dāng)解釋器遇到一個(gè)方法定義時(shí),它能安全地接受暫未定義的引用.
# Conversion of fahrenheit to celsius, broken
# down into two steps.
def f_to_c(f)
scale(f - 32.0) # This is a forward reference, but it's okay.
end
def scale(x)
x * 5.0 / 9.0
end
printf "%.1f is a comfortable temperature.\n", f_to_c(72.3)
所以,一方面看起來比使用Perl或Java要稍稍不方便一些,但卻沒有寫C那么嚴(yán)格(要求你永遠(yuǎn)維持所指的部分排序).將最高層的代碼放在源文件的最后總是可行的.即使這樣也比看見時(shí)要好的多.一個(gè)明智而無痛苦的好辦法是將main定義在文件頂端,再在底端調(diào)用它.
#!/usr/bin/env ruby
def main
# Express the top level logic here...
end
# ... put support code here, organized as you see fit ...
main # ... and start execution here.
Ruby也提供了將復(fù)雜程序分割為可讀,可重用,邏輯相關(guān)的大塊的工具.我們已看到用 include 來訪問模塊.你將發(fā)現(xiàn) load 和 require 也很有用.load的作用類似于文件的復(fù)制加粘貼(和C的#include處理器指令相似).require更復(fù)雜,僅在需要時(shí)才加載,而且最多加載一次.load和require還有其它一些區(qū)別;在語言手冊,FAQ中可找到更多信息.
就是這些了...
這個(gè)教程應(yīng)該足夠幫助你開始編寫Ruby程序了.隨著問題的深入,你可以深入?yún)⒖际謨?FAQ和庫參考也是很重要的資源.
祝好運(yùn),編程快樂!
相關(guān)文章
使用Ruby編寫腳本進(jìn)行系統(tǒng)管理的教程
這篇文章主要介紹了使用Ruby編寫腳本進(jìn)行系統(tǒng)管理的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04
mac及l(fā)inux下搭建ruby+rails環(huán)境
本文給大家分享了如何在mac以及Linux系統(tǒng)中安裝ruby+rails環(huán)境,非常詳細(xì),而且有圖有真相,希望大家能夠喜歡2017-11-11
Ruby使用C++擴(kuò)展實(shí)例(含C++擴(kuò)展代碼示例)
這篇文章主要介紹了Ruby使用C++擴(kuò)展實(shí)例,含C++擴(kuò)展實(shí)現(xiàn)代碼,本文可作為Ruby中使用C++擴(kuò)展的入門教程,需要的朋友可以參考下2014-09-09
Ruby中Hash哈希結(jié)構(gòu)的基本操作方法小結(jié)
Hash是一種鍵值對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),Ruby中直接帶有Hash類來對(duì)其提供支持,這里我們整理了Ruby中Hash哈希結(jié)構(gòu)的基本操作方法小結(jié),首先來回顧一下Hash的基本知識(shí):2016-06-06
詳解Ruby中的instance_eval方法及其與class_eval的對(duì)比
Ruby的eval族方法將字符串作為代碼來執(zhí)行,instance_eval方法便是其中之一,下面就來詳解Ruby中的instance_eval方法及其與class_eval的對(duì)比2016-05-05
借助RubyGnome2庫進(jìn)行GTK下的Ruby GUI編程的基本方法
這篇文章主要介紹了借助RubyGnome2庫進(jìn)行GTK下的Ruby GUI編程的基本方法,介紹了基本的UI和事件響應(yīng)的相關(guān)實(shí)現(xiàn),需要的朋友可以參考下2015-12-12

