第十一章 塊(下)

2022-09-02 01:03:14 字數 1559 閱讀 5914

(1)**清單11.8

(2)根據上例進行的:控制塊的執行

(3)proc將塊封裝為物件

之前我們使用塊,是定義方法然後根據這個方法名定義對應的塊,這樣方法名和塊是唯一對應。

下面講的是把塊當作物件處理,需要用到proc物件,那麼使用proc.new定義帶塊的方法,要呼叫塊就去呼叫proc物件的call方法。這樣的塊就不必和方法名唯一繫結。

(4)在方法定義時,如果末尾的引數使用"& 引數名"的形 式,ruby 就會自動把呼叫方法時傳進來的塊封裝為 proc 物件。改寫**清單11.8為該形式:

我們在首行的方法定義中定義了 &block 引數。像這樣,在變數名前新增 & 的引數被稱為 proc 引數。如果在呼叫方法時沒有傳遞塊,proc 引數的值就為 nil,因此通過這個值就可以判斷出是否有塊被傳入方法中。另外,執行塊的語句不是 yield,而是 block.call(num),這一點與之前的例子也不一樣。

在第 7 章中我們提到過方法可以有多個引數,而且定義引數的預設值等時都需要按照一定的順序。而 proc 引數則一定要在所有引數之後,也就是方法中最 後乙個引數。

將塊封裝為 proc 物件後,我們就可以根據需要隨時呼叫塊。甚至還可以將其賦值給例項變數,讓別的例項方法去任意呼叫。

(5)此外,我們也能將 proc 物件作為塊傳給其他方法處理。例如,向call_each方法以外的其他方法----- array#each 方法 傳遞proc物件

這樣一來,我們就可以非常方便地把呼叫 call_each 方法時接收到的塊,原封不動地傳給其他方法------ ary.each 方法

(6)區域性變數與塊變數

區域性變數:如下在塊外面定義的變數就是區域性變數,x=1,y=1

塊變數:塊裡面的變數,|x|

(9)(1)塊變數能更改塊之外的區域性變數

modern c design 第十一章

本章介紹了經常遇到的雙分派的一種泛型解決方案。c 在語法上實現了單分派,即虛函式,通過動態機制選擇相應的函式。雙分派是形如fun object1 a,object2 b 根據a和b的實際型別動態自動分派乙個處理函式。最容易想到的方案,蠻幹法 寫一大堆過載函式.不過這種方法會有很強的依賴性。也提供了一...

第十一章3

第十一章 一 滾動元件 awt中的滾動元件包括scrollbar 滾動條 和滾動面板 scrollpane 兩種。1 滾動條scrollbar 在指定的取值範圍內快速選取某一值的功能。i.構造方法 public scrollbar int orientation,int value,int visi...

java第十一章

問題 1 錯誤 2 異常,1 編譯時異常 檢查異常 2 執行時異常 不檢查異常 是否能用 解決,是的就是異常,不是的就是錯誤 問題 1 先驗 2 捕獲 異常捕獲機智 異常的三個種類 1 檢查異常 2 執行時異常 3 錯誤 throw 提示方法呼叫者本方法可能發生異常 throw跟異常物件 throw...