我們總是希望對未知事件分類.當它發生時,向其它方法傳遞一塊作為引數的程式碼是最容易地解決方法,也就是說我們希望像處理資料一樣處理程式碼.
乙個新的過程物件可以通過proc建立:
ruby> quux = proc
#現在quux指向乙個物件,像其它物件一樣,它也有可以呼叫的行為.特別的,我們可以用call方法執行它:
ruby> quux.call
quuxquuxquux!!!
nil
那麼quux可以用做乙個方法的引數嗎?當然.
ruby> def run( p )
| print "about to call a procedure...\n"
| p.call
| print "there: finished.\n"
| end
nil
ruby> run quux
about to call a procedure...
quuxquuxquux!!!
there: finished.
nil
trap方法令到我們可以對任何系統訊號做出我們自己的選擇.
ruby> inthandler = proc
#ruby> trap "sigint", inthandler
#一般的,敲入^c將導致直譯器退出.但現在乙個資訊被列印出來,直譯器繼續執行著,所以你不會丟失掉正在作業的工作.(你不會永遠留在直譯器裡,你仍可以用 exit 或者按 ^d退出)
最後在我們開始下一節之前還應注意的一點是:在將乙個過程物件綑綁到乙個訊號之前,不是必須給這個過程物件命名的.乙個等效的匿名(anonymous)過程物件像這樣
ruby> trap "sigint", proc
nil
或著更簡略,
ruby> trap "sigint", 'print "^c was pressed.\n"'
nil
這種簡寫為你提供了一種方便和可讀性更強的寫小匿名過程的路子.
Ruby物件導向
ruby是真正的物件導向語言,一切皆為物件,甚至基本資料型別都是物件 class box 建構函式 def initialize w,h with,height w,h 加 的是例項變數 end get方法 def getwidth with 預設最後一條語句的返回值作為函式返回值 enddef g...
物件呼叫方法的解析過程
弄清楚如何在物件上應用方法呼叫非常重要。下面假設要呼叫x.f args 隱式引數x宣告為類c的乙個物件。下面是呼叫過程的詳細描述 1 編譯器檢視物件的宣告型別和方法名。假設呼叫x.f param 且隱式引數x宣告為c類的物件。需要注意的是 有可能存在多個名字為f,但引數型別不一樣的方法。例如可能存在...
ruby解析xml檔案
1.xml檔案如下 gar001 計算機組裝與維護教程 借閱時間 2008 03 14t17 23 28劉瑞新 機械工業出版社1中文 ctec gar002 計算機接 術 借閱時間 2008 03 14t17 27 16劉星等 機械工業出版社1中文 ctec gar003 數值分析與演算法 借閱時間...