《互動式程式設計 第2版》一2 7 作用域

2021-09-23 13:51:58 字數 1033 閱讀 7923

作用域有時讓人很討厭,由它而起的問題通常難以定位。幸而要避免這樣的問題其實還挺簡單。

先看一段processing**:

void setup()  

i+=1;

print(i);

}

我們在第3章會仔細講processing平台,現在你看不懂也沒有關係,直接編譯它。編譯之後processing的控制台視窗會彈出些有趣的訊息:

cannot find anything named "i"

找不到名為「i」的東西。怎麼回事呢?作用域是程式**的其中一段或一部分,在這個區域裡,你可以訪問和獲取相應的資料等內容,而在作用域之外則無法訪問和獲取。圖2-8表示了每個變數所屬的作用域。

圖2-8:乙個函式裡變數的作用域

一般的規律是,變數在最接近它的花括號內有效。例如在函式內定義了乙個變數:

void somefunction()
anint在函式內有效,右花括號就是它作用域結束的標誌。變數如果是在語句內被定義的,比如

if(something)  

anint = 5; // 錯誤!anint在花括號之外就失效了

那麼它只存在於語句之內,所以上面的這個anint在if語句之外就失效了。為什麼要規定作用域呢?簡單說來就是為了讓程式分清哪些東西在用,哪些東西沒在用,這樣執行起來會更加高效。只要記住括號定律就行了:如果變數出現之前有乙個左花括號,那麼這個變數作用域就是到對應的右花括號為止。

有些變數在整個程式裡都有效,不會越出作用域。這類變數被稱為「全域性變數」。在processing和arduino裡,全域性變數在方法setup()的外面宣告。在openframeworks裡情況有點不同,我們在後面專門講openframeworks的時候再來詳細討論。後面的章節分別討論不同的程式語言,每一種語言對全域性變數的處理都稍有不同,到時你會對全域性變數有更深入的了解。

《互動式程式設計 第2版》一2 7 作用域

作用域有時讓人很討厭,由它而起的問題通常難以定位。幸而要避免這樣的問題其實還挺簡單。先看一段processing void setup i 1 print i 我們在第3章會仔細講processing平台,現在你看不懂也沒有關係,直接編譯它。編譯之後processing的控制台視窗會彈出些有趣的訊息...

《互動式程式設計 第2版》一1 3 設計與互動

偉大的工業設計師henry dreyfuss把設計稱為 對人的測量 意思是,設計是理解和分析人類行為的絕佳途徑。如何定義 設計 一詞,這留給別人去想 而我則關注互動設計作為 創作一種工具或方法 的方面,我們使用這種工具或方法完成一些特定的事情。需要完成的事情越具體或特殊,所需的工具就越要精雕細刻,互...

《互動式程式設計 第2版》一2 4 控制語句

你經常需要控制程式的邏輯流程。如果某個條件成立,則執行某些操作 不成立則執行另外的操作。有時你想多次重複某個操作直到條件有所變化。你可以使用兩種控制語句來實現以上提及的邏輯流程 一種是條件邏輯語句,判斷條件為true還是false 另一種是迴圈語句,對乙個操作重複一定的次數,或者一直重複到某個條件變...