ruby 過程物件 解析

2021-07-02 04:19:56 字數 1024 閱讀 5537

我們總是希望對未知事件分類.當它發生時,向其它方法傳遞一塊作為引數的程式碼是最容易地解決方法,也就是說我們希望像處理資料一樣處理程式碼.

乙個新的過程物件可以通過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 數值分析與演算法 借閱時間...