程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Object-C---)Swift之(八)枚舉

Object-C---)Swift之(八)枚舉

編輯:關於C語言

Object-C---)Swift之(八)枚舉


聲明枚舉

Swift使用enum定義枚舉,語法格式為

enum 枚舉名
{
//使用case關鍵字列出所有枚舉值
//枚舉的其他成員
}

Swift即允許每個枚舉值單獨用一個case關鍵字,也允許使用一個case定義多個枚舉值,多個枚舉值之間以英文逗號隔開。枚舉名從程序可讀性方面來看,swift枚舉名必須是有一個或多個有意義的單詞連綴而成的,每個單詞首字母大寫,其他字母全部小寫,單詞與單詞之間不要使用任何分割符。

    enum Weekday
{
case Monday
case Tuesday
case Wednesday
case Thursday
case Friday
case Staturday
case Sunday
}

調用枚舉

    var day:Weekday
   day=Weekday.Sunday

當程序可以推斷變量的枚舉類型時,Swift允許省略枚舉值前面的枚舉名前綴。

day=.Sunday

枚舉值和switch語句

 var chooseDay=Weekday.Sunday
switch(chooseDay)
 {
case .Monday,Tuesday,Wednesday,Thursdayv,Friday:
print("工作日")
 case .Staturdayv,Sunday
print("周末")
}

原始值

可以通過原始值為每一個枚舉實例指定一個簡單類型(如Int、Double、Float)
語法格式如下:

enum 枚舉名:原始值類型
{
case 枚舉值=原始值
}

注意Swift並不要求對每個枚舉值指定原始值,Swift可以根據已經指定的原始值的枚舉來推斷它前後所有枚舉的枚舉值。

enum Weekday:Int
{
case Monday,Tuesday=1,Wednesday,Thursday,Friday,Saturday,Sunday
}

由Tuesday等於1可以推斷出Monday等於0,Wedding等於2,以後的等於3、4…
但是字符串不能進行推斷,需要給每個枚舉都指定原始值。

enum Season:Character
{
case Spring="S"
case Summer="U"
case Fall="F"
case Winter="W"
}

枚舉可使用如下構造器和屬性

init?(rawValue:)可能失敗的構造器。因此該* 構造器返回的是包含枚舉值的可選類型

rawValue:屬性(使用枚舉實例調用)。獲取指定枚舉值的原始值。

var day=Weekday.Staturday
print(".Saturday的原始值為:\(day.rawValue)")//輸出8
var mySeason=Season(rawValue:"S")
if mySeason !=nil
{ 
 print(mySeason!)
print("春天")
}

注意:可能是一個失敗的構造器,所以需要加以判斷,否則會造成崩潰。
關聯值
定義一個枚舉時,可以為枚舉添加豐富的枚舉屬性,這和C、Object-C相比,極大的豐富了枚舉的作用。

enum Season
{
case Monday(Work:String)
case Tuesday(Work:String)
case Wednesday(Work:String)
case Thursday(Work:String)
case Friday(Work:String)
case Staturday(Work:String)
case Sunday(Work:String)
}
var mySeason1=Season.Monday(Work:"工作呀")
var mySeason2=Season.Sunday(Work:"相親呀")

訪問枚舉值的關聯值,需要聲明額外的變量或常量,並將枚舉值的關聯值綁定到這些變量或常量。

Season.Monday(Work:String)=mySeason1
print("\(Work)")

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved