在程式語言中,一般用乙個數值來代表某一狀態,這種處理方法不直觀,易讀性差。如果能在程式中用自然語言中有相應含義的單詞來代表某一狀態,則程式就很容易閱讀和理解。也就是說,事先考慮到某一變數可能取的值,盡量用自然語言中含義清楚的單詞來表示它的每乙個值,這種方法稱為列舉方法,用這種方法定義的型別稱列舉型別。
定義的列舉型別名稱通常與專案的類檔案字首相同,或者是類庫框架縮寫,或者跟隨具體業務名,如果開頭是縮寫要大寫表示,跟隨其後的命名應採用駝峰命名法則,命名應準確表述列舉表示的意義,列舉中各個值都應以定義的列舉型別開頭,其後跟隨各個列舉值對應的狀態、選項或者狀態碼。
// 方法呼叫
[self demo:ghopertiontypeup | ghopertiontypedown | ghopertiontypeleft | ghopertiontyperight];
複製**
// 方法實現
- (void)demo:(ghopertiontype)type
if (type & ghopertiontypedown)
if (type & ghopertiontypeleft)
if (type & ghopertiontyperight)
}複製**
首先你要知道以下這些知識:
<< 是左移運算子 : 用來將乙個數的各二進位制位全部左移若干位。
舉個栗子 :0000 0001 代表 二進位制中的 1
左移一位 <<1
就會變成 :0000 0010 代表 二進位制中的 2
簡便演算法:8 << n的值為8 *(2^n)
複製**
按位與運算 :&
1 & 1 = 1; 1 & 0 = 0; 0 & 0 = 0
總結規則:有0則為0
複製**
按位或運算: |
1 | 1 = 1; 1 | 0 = 1; 0 | 0= 0
總結規則: 有1則為1
複製**
以上可以推導出:
ghopertiontypeup : 0000 0001
ghopertiontypedown : 0000 0010
ghopertiontypeleft : 0000 0100
ghopertiontyperight : 0000 1000
複製**
由第三點我們可知,ghopertiontypeup | ghopertiontypedown | ghopertiontypeleft | ghopertiontyperight 進行按位或運算後的結果為 : 0000 1111,再根據第二點,此值和ghopertiontypeup 進行按位與運算時得到的結果為 : 0000 0001,結果不為 0,也就會列印出 ghopertiontypeup,依次類推。
綜上所述可以解釋位移列舉為什麼可以乙個引數可以傳遞多個值,這也是位移列舉的優點。
iOS開發筆記
1.預設快取策略下 useprotocolcachepolicy 對於靜態資源的訪問,請求頭會自動帶上 if none match if modified since 快取方面,響應頭帶有 last modified etag 兩個字段 儘管charles抓包結果為304,但是 urlsession...
ios開發筆記 4
title ios開發筆記 4 date 2016 02 21 01 11 55 categories ios tags ios,筆記 一般此問題 都是由inte ce build與 中iboutlet的連線所引起的。可能是在 中對iboutlet的名稱進行了修改,導致inte ce build中的...
我的ios開發筆記
這個星期開始學習 ios開發 由於本人記性不好 將知識點在這篇文章做乙個備忘 以下是網路上摘錄知識點的索引。json 我用的是jsonkit property synthesize property是乙個屬性訪問宣告,擴號內支援以下幾個屬性 1,getter gettername,setter se...