W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
請(qǐng)看函數(shù)findBisect的接口:
int findBisect (const Card& card, const apvector<Card>& deck,int low, int high) {
把三個(gè)參數(shù)deck,low和high看作指定一個(gè)子牌堆的單一參數(shù)是可以說得通的。
這種事情很常見,有時(shí)我把它當(dāng)作抽象參數(shù)。所謂”抽象“,我指的是在更高層次上描述函數(shù),并非程序代碼的字面意思。
例如,當(dāng)以向量以及用以限界的low和high為參數(shù)調(diào)用函數(shù)時(shí),其實(shí)根本沒辦法限制函數(shù)中訪問界限之外的元素。所以我們并沒有像字面上說的那樣傳遞了子牌堆,但是只要被調(diào)函數(shù)按規(guī)矩辦事, 抽象的將參數(shù)當(dāng)做子牌堆是有意義的。
還有一個(gè)例子,你可能已經(jīng)注意到了,在9.3節(jié),我提到“空”數(shù)據(jù)結(jié)構(gòu)時(shí)也用到了這種抽象。“空”上的引號(hào)就是為了提醒讀者,這并非是字面意義上真正的空。所有的變量自始至終都是有值的。創(chuàng)建變量之時(shí),它們會(huì)有默認(rèn)值。所以沒有空對(duì)象這樣的東西。
但是,如果程序確保變量的當(dāng)前值在寫之前從未被讀過,則當(dāng)前值是無意義的值。抽象地講,把這種變量當(dāng)做”空“值是說得通的。
這種思考方式——即程序帶上了超出編碼字面意思之外的意義——是像計(jì)算機(jī)科學(xué)家一樣思考問題的一個(gè)重要部分。有時(shí),”抽象“這個(gè)詞用的太多、太雜,可能難以解釋。盡管如此,抽象仍然是計(jì)算機(jī)科學(xué)(以及很多其他領(lǐng)域)的一個(gè)中心思想。
“抽象”的一個(gè)更一般的定義是“為了抓住重要行為且抑制不必要的細(xì)節(jié),使用簡(jiǎn)單的描述建模復(fù)雜系統(tǒng)的過程”。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: