Swift開發(fā)標(biāo)準(zhǔn)教程-枚舉和結(jié)構(gòu)_第1頁
Swift開發(fā)標(biāo)準(zhǔn)教程-枚舉和結(jié)構(gòu)_第2頁
Swift開發(fā)標(biāo)準(zhǔn)教程-枚舉和結(jié)構(gòu)_第3頁
Swift開發(fā)標(biāo)準(zhǔn)教程-枚舉和結(jié)構(gòu)_第4頁
Swift開發(fā)標(biāo)準(zhǔn)教程-枚舉和結(jié)構(gòu)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

枚舉和結(jié)構(gòu)9.1枚舉的構(gòu)成9.2定義枚舉9.3定義枚舉的成員9.4實(shí)例化枚舉的對象9.5枚舉成員與switch匹配9.6訪問枚舉類型中成員的原始值9.7關(guān)聯(lián)值9.8定義枚舉的其他內(nèi)容第9章枚舉和結(jié)構(gòu)9.9遞歸枚舉9.10結(jié)構(gòu)的構(gòu)成9.11結(jié)構(gòu)的創(chuàng)建與實(shí)例化9.12定義結(jié)構(gòu)中的內(nèi)容9.13類、枚舉、結(jié)構(gòu)的區(qū)別9.14嵌套類型9.15綜合案例9.16上機(jī)實(shí)踐9.1枚舉的構(gòu)成通常,一個(gè)枚舉包括成員值、屬性、下標(biāo)講解以及方法。9.2定義枚舉9.2.1任意類型的枚舉類型9.2.2指定數(shù)據(jù)類型的枚舉類型9.2.1任意類型的枚舉類型任意類型的枚舉使用enum關(guān)鍵字進(jìn)行定義,其語法形式如下:enum枚舉名稱{…}9.2.2指定數(shù)據(jù)類型的枚舉類型指定數(shù)據(jù)類型的枚舉也是使用enum關(guān)鍵字進(jìn)行定義,但是要在枚舉名稱后面添加“:”冒號(hào)以及數(shù)據(jù)類型。其定義形式如下:enum枚舉名稱:數(shù)據(jù)類型{…}9.3定義枚舉的成員9.3.1定義任意類型的枚舉成員9.3.2定義指定數(shù)據(jù)類型的枚舉成員9.3.3定義枚舉成員時(shí)的注意事項(xiàng)9.3.1定義任意類型的枚舉成員定義任意類型的枚舉成員需要使用關(guān)鍵字case,其語法形式如下:enum枚舉名稱{

case成員名稱1

case成員名稱2

…}1.成員定義為不同類型在具有任意類型的枚舉類型中,可以將它里面的成員定義為不同類型,其語法形式如下:enum枚舉名稱{

case成員名1(數(shù)據(jù)類型)

case成員名2(數(shù)據(jù)類型)

…}2.可以不定義成員在任意類型中,可以不定義成員,從而形成一個(gè)空的枚舉類型。9.3.2定義指定數(shù)據(jù)類型的枚舉成員定義指定數(shù)據(jù)類型的枚舉類型成員也同樣需要使用case,其語法形式如下:enum枚舉名稱:數(shù)據(jù)類型{case成員名稱1=原始值case成員名稱2=原始值…}1.可以不指定原始值2.不可以定義其他類型3.原始值必須是唯一的4.必須定義成員9.3.3定義枚舉成員時(shí)的注意事項(xiàng)在定義枚舉的成員時(shí)需要注意一些內(nèi)容,避免程序出現(xiàn)錯(cuò)誤。以下就是總結(jié)了開發(fā)者常遇到的2個(gè)問題。1.case不可省在為枚舉類型定義成員時(shí),case關(guān)鍵字是不可以省去的。否則,程序就會(huì)出現(xiàn)錯(cuò)誤。2.多個(gè)成員寫在同一行在Swift中,如果在一個(gè)枚舉類型中定義了多個(gè)成員,可以將這多個(gè)成員寫在同一行,并使用“,”逗號(hào)分隔開。9.4實(shí)例化枚舉的對象在使用枚舉之前,首先要對枚舉進(jìn)行實(shí)例化。枚舉的實(shí)例化的語法形式如下:let/var枚舉對象名=枚舉.成員名9.5枚舉成員與switch匹配由于枚舉具有多個(gè)成員,相當(dāng)于switch中的分支結(jié)構(gòu)。所以枚舉經(jīng)常配合switch語句進(jìn)行使用,從而可以將成員的原始值進(jìn)行獲取。9.6訪問枚舉類型中成員的原始值9.6.1通過成員訪問原始值9.6.2通過原始值訪問成員9.6.1通過成員訪問原始值rawValue屬性可以通過枚舉中的成員對相應(yīng)的原始值進(jìn)行訪問。其語法形式如下:let/var常量名/變量名=枚舉名稱.成員名稱.rawValue在訪問指定類型為整型的枚舉的成員時(shí),需要注意以下2點(diǎn):如果有其他的成員沒有指定原始值,那它們會(huì)自動(dòng)遞增。例如,如果第2個(gè)成員的原始值為5,那么第3個(gè)成員的原始值為6,第4個(gè)成員的原始值為7,以此類推。如果所有的成員都沒有指定原始值的話,那么在枚舉中第一個(gè)成員的原始值就為0,然后在自動(dòng)遞增,即第二個(gè)成員的原始值為1,第三個(gè)成員得原始值為2,以此類推。9.6.2通過原始值訪問成員rawValue()函數(shù)正好與rawValue屬性方法的功能相反,它是通過原始值來獲取成員。其語法形式如下:let/var常量名/變量名=枚舉類型名(rawValue:原始值)9.7關(guān)聯(lián)值在任意類型的枚舉類型中,可以定義任意的成員,這些成員是沒有值的。在實(shí)例化時(shí),可以定義此成員的相關(guān)信息,這些信息被稱為關(guān)聯(lián)值。關(guān)聯(lián)值的定義形式:let/var枚舉類型對象=枚舉類型名.成員名(關(guān)聯(lián)值)9.8定義枚舉的其他內(nèi)容9.8.1定義屬性9.8.2定義方法9.8.3定義下標(biāo)腳本9.8.1定義屬性定義枚舉的屬性包括計(jì)算屬性和類型屬性兩種。1.計(jì)算屬性在枚舉中可以定義計(jì)算屬性,它的定義形式在類中類中已經(jīng)講解過了。調(diào)用形式如下:枚舉對象名.計(jì)算屬性名2.類型屬性類型屬性的定義在類中講解過了。只不過要是類型屬性在枚舉中定義,需要使用關(guān)鍵字static,而非class。調(diào)用形式如下:枚舉類型名.類型屬性3.添加屬性監(jiān)視器當(dāng)然,如果開發(fā)者想要查看屬性值的變化,還可以添加屬性監(jiān)視器。9.8.2定義方法在枚舉中方法也分為了實(shí)例方法和類型方法。其中,實(shí)例方法和類型方法的定義在類中講解過了。只不過在枚舉中定義類型方法時(shí),需要使用關(guān)鍵字static。1.實(shí)例方法如果開發(fā)者想要調(diào)用枚舉中的實(shí)例方法,需要使用以下的語法形式:枚舉對象名.實(shí)例方法名(參數(shù)值1,參數(shù)名2:參數(shù)值2,…)2.類型方法如果開發(fā)者想要調(diào)用枚舉中的類型方法,需要使用以下的語法形式:枚舉名.類型方法名(參數(shù)值1,參數(shù)名2:參數(shù)值2,…)9.8.3定義下標(biāo)腳本在枚舉中是可以定義下標(biāo)腳本的,它的調(diào)用形式如下:枚舉對象名[下標(biāo)值]9.9遞歸枚舉遞歸枚舉是一種枚舉類型。它有一個(gè)或多個(gè)枚舉成員使用該枚舉類型的實(shí)例作為關(guān)聯(lián)值。使用遞歸枚舉時(shí),編譯器會(huì)插入一個(gè)間接層。開發(fā)者可以在在枚舉成員前加上indirect來表示該成員可遞歸。如果想要讓枚舉中的所有成員可遞歸,可以在定義枚舉時(shí),在關(guān)鍵字enum前面加上indirect。9.10結(jié)構(gòu)的構(gòu)成結(jié)構(gòu)(struct)是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合,也叫結(jié)構(gòu)體。結(jié)構(gòu)體和類有很多相同的地方。但結(jié)構(gòu)比類使用更簡單,運(yùn)行效率也更高。一個(gè)結(jié)構(gòu)通常由屬性、方法以及下標(biāo)腳本構(gòu)成。9.11結(jié)構(gòu)的創(chuàng)建與實(shí)例化9.11.1結(jié)構(gòu)的創(chuàng)建9.11.2結(jié)構(gòu)體的實(shí)例化9.11.1結(jié)構(gòu)的創(chuàng)建結(jié)構(gòu)是通過關(guān)鍵字struct進(jìn)行創(chuàng)建的,其語法形式如下:struct結(jié)構(gòu)名稱{

…}9.11.2結(jié)構(gòu)體的實(shí)例化結(jié)構(gòu)的實(shí)例化對象和類的實(shí)例化對象相似,其語法形式如下:let/var變量名=結(jié)構(gòu)體名稱()9.12定義結(jié)構(gòu)中的內(nèi)容結(jié)構(gòu)和類一樣,也可以定義屬性、方法以及下標(biāo)講解。以下就是對這些內(nèi)容的講解。9.12.1定義屬性9.12.2定義方法9.12.3定義下標(biāo)腳本9.12.1定義屬性在結(jié)構(gòu)中是可以定義屬性的。屬性包含存儲(chǔ)屬性、計(jì)算屬性和類型屬性。以下就是對這三種屬性的定義。1.存儲(chǔ)屬性存儲(chǔ)屬性的定義在類中講解過了,分為兩種:一個(gè)是常量存儲(chǔ)屬性,一種是變量存儲(chǔ)屬性。對存儲(chǔ)屬性的訪問以及修改使用以下的形式。結(jié)構(gòu)對象.存儲(chǔ)屬性2.計(jì)算屬性計(jì)算屬性的定義在類中講解過了,它的調(diào)用形式如下:結(jié)構(gòu)對象名.計(jì)算屬性名3.類型屬性類型屬性的定義在類中講解過了,只不過在定義類型屬性時(shí),關(guān)鍵字值可以為static,它的調(diào)用形式如下:結(jié)構(gòu)名稱.類型屬性4.添加屬性監(jiān)視器開發(fā)者不僅可以在類中、枚舉中添加屬性監(jiān)視器對屬性的值進(jìn)行監(jiān)控,還可以在結(jié)構(gòu)中添加屬性監(jiān)視器。5.使用屬性初始化實(shí)例對象在結(jié)構(gòu)中,可以在實(shí)例化對象時(shí),直接對屬性進(jìn)行賦值。這是在類中所不允許的。其語法形式如下:let/var結(jié)構(gòu)對象名=結(jié)構(gòu)名稱(屬性名1:內(nèi)容,屬性名2:內(nèi)容)9.12.2定義方法在結(jié)構(gòu)中也可以定義實(shí)例方法和類型方法。以下就這兩個(gè)方法在結(jié)構(gòu)中的介紹。1.定義實(shí)例方法實(shí)例方法的定義在前面的章節(jié)中講解過了,它的調(diào)用形式如下:結(jié)構(gòu)對象名.實(shí)例方法(參數(shù)值1,參數(shù)名2:參數(shù)值2,…)2.定義類型方法類型方法的定義在前面的章節(jié)中講解過了,它的調(diào)用形式如下:結(jié)構(gòu)名.類型方法(參數(shù)值1,參數(shù)名2:參數(shù)值2,…)9.12.3定義下標(biāo)腳本在結(jié)構(gòu)中也是可以定義下標(biāo)腳本的,其中下標(biāo)腳本的定義在前面的章節(jié)中已經(jīng)講解過了,對下標(biāo)腳本的調(diào)用的語法形式如下:結(jié)構(gòu)對象名[下標(biāo)值]9.13類、枚舉、結(jié)構(gòu)的區(qū)別名稱類型定義類型屬性和方法的關(guān)鍵字繼承類引用類型class支持繼承枚舉類型數(shù)值類型static不支持繼承結(jié)構(gòu)9.14嵌套類型枚舉常被用于為特定類或結(jié)構(gòu)實(shí)現(xiàn)某些功能。類似的,也能夠在某個(gè)復(fù)雜的類型中,方便地定義工具類或結(jié)構(gòu)來使用。為了實(shí)現(xiàn)這種功能,Swift允許開發(fā)者定義嵌套類型,可以在支持的類型中定義嵌套的枚舉、類和結(jié)構(gòu)體。9.15綜合案例9.15.1輸出對應(yīng)音符發(fā)音9.15.2根據(jù)棱長,計(jì)算正方體的表面積和體積9.15.1輸出對應(yīng)音符發(fā)音【程序9-27】構(gòu)建枚舉類型,保存Do、Re

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論