Swift 面向?qū)ο? 1: 枚舉

//swift語言中將結(jié)構(gòu)體與枚舉放在了面向?qū)ο蟮乃枷胫幸驗(yàn)槊杜e、結(jié)構(gòu)體、類工作原理完全相同這三種面向?qū)ο蟮囊囟伎梢远x屬性、方法、下標(biāo)、構(gòu)造器、嵌套

//通常使用枚舉定義常量當(dāng)一個(gè)變量有多個(gè)值的使用我們可以將變量定義成枚舉類型

//枚舉、結(jié)構(gòu)體定義的變量我們稱其為實(shí)例類定義的變量我們稱其為對(duì)象

1.枚舉類型的定義格式

//枚舉中一個(gè)case可以對(duì)應(yīng)一個(gè)枚舉值也可以一個(gè)case對(duì)應(yīng)多個(gè)枚舉值多個(gè)枚舉值之間用逗號(hào)隔開

enum Season {

case Spring

case Summer

case Autumn

case Winter

}

enum WeekDay {

case Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday

}

var s = Season.Spring

print(s)

//[注意]swift語言中枚舉沒有默認(rèn)常量值枚舉值對(duì)應(yīng)的常量必須手動(dòng)設(shè)置

s = .Winter

print(s)

//[注意]枚舉類型的變量類名明確或者能夠推測(cè)出來賦值時(shí)可以直接通過.調(diào)到枚舉值

//獲取枚舉變量對(duì)應(yīng)的值最好使用switch語句判斷

switchs {

case .Spring:

print("春天來了~")

case .Summer:

print("夏天到了~")

case .Autumn:

print("秋天近了~")

case .Winter:

print("冬天不遠(yuǎn)了")

}

//為枚舉值添加常量值稱為原始值rawValue

//枚舉表示的常量值類型Int、Float、Double、String、Character

enum WeekDays: Int {

case Monday,Tuesday = 10,Wednesday,Thursday,Friday = -20,Saturday,Sunday

}

//枚舉值的原始值是前一個(gè)原始值加1

var day = WeekDays.Saturday

print(day.rawValue)

print(day.hashValue)

//[注意]枚舉值的原始值類型是數(shù)字類型那么原始值只能賦整數(shù)類型不能出現(xiàn)小數(shù)

//枚舉值的原始值類型為字符串類型

//1.編譯器默認(rèn)字符串類型的原始值與枚舉值同名

enum Sex: String {

case男

case女 = "nv"

case未知

}

var ss = Sex.女

print(ss.rawValue)

//2.枚舉值原始值為字符類型

//編譯器是不能推斷字符類型枚舉值的原始值必須手動(dòng)全部賦值

enum SeasonAgain: Character {

case Spring = "C"

case Summer = "X"

case Autumn = "Q"

case Winter = "D"

}

var again = SeasonAgain.Summer

print(again.rawValue)

//通過原始值獲取對(duì)應(yīng)的枚舉值

print(SeasonAgain(rawValue: "W"))

print(SeasonAgain(rawValue: "D")!)

2.枚舉的關(guān)聯(lián)值

//枚舉不僅能夠定義多個(gè)枚舉值每個(gè)枚舉值也可以攜帶多個(gè)多種類型的數(shù)據(jù)我們稱枚舉值攜帶的數(shù)據(jù)為關(guān)聯(lián)值

//格式: case 枚舉值(元組)

enum Trade {

case Buy(name: String,price: Double)

case Sell(name: String)

case Temp(String,String)

}

var tr = Trade.Buy(name: "Swift編程", price: 75.0)

//關(guān)聯(lián)值不能通過標(biāo)簽或者下標(biāo)直接獲取

//如果想要獲取關(guān)聯(lián)值中的內(nèi)容需要借助switch語句使用臨時(shí)變量或者常量接收

func tradeAction(trade: Trade,name: String,price: Double){}

func tradeAction(trade: Trade){

switch trade {

    

case .Buy(let name123,let price123):

    print(name123,price123)

case .Sell(let name):

    print(name)

default:

    break

}

}

tradeAction(tr)

3.枚舉的嵌套

//enum Date {

//

// case yyyy

// case MM

// case dd

//}

//enum Timer {

// case Birthday(date: Date)

//}

enum Timer {

case yyyy

case MM

case dd



indirectcase Birthday(date: Timer)

}

var time = Timer.Birthday(date: Timer.yyyy)

switchtime {

case .Birthday(date: .yyyy):

print("表示的是出生年")

case .Birthday(date: .MM):

print("表示的是出生月")

case .Birthday(date: .dd):

print("表示的是出生日")

case .yyyy,.MM,.dd:

print("1234567890")

default:

break

}

var a = 10

var b = a

a = 20

print(b)

func swap(inout a: Int) {

a = 1000

print(a)

}

var m = 10

swap(&m)

print(m)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容