程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 深刻解析Swift編程中列舉類型的相干應用

深刻解析Swift編程中列舉類型的相干應用

編輯:更多關於編程

深刻解析Swift編程中列舉類型的相干應用。本站提示廣大學習愛好者:(深刻解析Swift編程中列舉類型的相干應用)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻解析Swift編程中列舉類型的相干應用正文


列舉是由用戶界說的數據類型的一組相干值。症結字 enum 用來界說列舉數據類型。

列舉功效
列舉在 swift 也相似於 C 和 Objective C 中構造類型

  • 它是在一個類中聲明,其值是經由過程該類的實例來拜訪
  • 初始成員值是用列舉初始化界說的
  • 其功效也擴大確保尺度的協定功效

語法
列舉引入 enum 症結字和一對年夜括號內將它們界說:

enum enumname {
   // enumeration values are described here
}

例如,可認為禮拜界說列舉以下:

enum DaysofaWeek {
   case Sunday
   case Monday
    ---
   case Saturday
}

示例

enum names{
   case Swift
   case Closures
}
var lang = names.Closures
lang = .Closures
switch lang
{
   case .Swift:
   println("Welcome to Swift")
   case .Closures:
   println("Welcome to Closures")
   default:
   println("Introduction")
}

當我們下面的法式應用 playground 運轉,我們獲得以下成果

Welcome to Closures

Swift 中的列舉不象 C 和 Objective C 分派其成員的默許值,相反,成員由它們列舉稱號明白界說。列舉稱號應當應用年夜寫字母(例如:enum DaysofaWeek)。

var weekDay = DaysofaWeek.Sunday

這裡所述列舉名'DaysofaWeek'被分派給一個變量 weekday.Sunday。它告訴編譯器數據類型屬於周日將被分派給該特定類的後續列舉成員。一旦列舉成員的數據類型界說,其成員可以經由過程傳遞值,並進一步盤算停止拜訪。

列舉與Switch語句
Swift 中的 'Switch' 語句也遵守了多路選擇。 只要一個變量被以基於指定的前提的特准時間拜訪。默許情形下,在switch語句用於捕捉不肯定的情形(case)。

enum Climate{
   case India
   case America
   case Africa
   case Australia
}

var season = Climate.America
season = .America
switch season
{
   case .India:
      println("Climate is Hot")
   case .America:
      println("Climate is Cold")
   case .Africa:
      println("Climate is Moderate")
   case .Australia:
      println("Climate is Rainy")
   default:
      println("Climate is not predictable")
}

當我們下面的法式應用 playground 運轉,我們獲得以下成果

Climte is Cold

該法式起首界說了Climate 作為列舉稱號。那末它的成員如, 'China', 'America', 'Africa' 和 'Australia' 聲明屬於類 'Climate'. 如今成員 America 被分派到一個 Season 變量。另外,Switch case可以找到對應 .America 的值,並跳轉到該特定語句。 輸入將顯示為 “Climate is Cold”。異樣,一切成員可以經由過程 switch 語句拜訪。 當前提不知足它打印默許內容 'Climate is not predictable'

列舉可進一步劃分到相干的值和原始值。

聯系關系值和原始值之間的差別

列舉與聯系關系值

enum Student{
   case Name(String)
   case Mark(Int,Int,Int)
}
var studDetails = Student.Name("Swift")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
   case .Name(let studName):
      println("Student name is: \(studName).")
   case .Mark(let Mark1, let Mark2, let Mark3):
      println("Student Marks are: \(Mark1),\(Mark2),\(Mark3).")
   default:
      println("Nothing")
}

當我們下面的法式應用 playground 運轉,我們獲得以下成果

Swift
98
97
95

例如,斟酌拜訪先生的名字和標志固定在三個科目列舉稱號被聲明為 student ,而在列舉類中的成員稱號都屬於字符串數據類型,標志表現為 mark1, mark2 和 mark3 數據類型為整數。若要拜訪的是先生的名字或標志分數:

var studDetails = Student.Name("Swift")
var studMarks = Student.Mark(98,97,95)

如今,假如塊初履行,switch case 將打印先生姓名,不然它將打印先生固定的標志。 假如這兩個前提都掉敗了,將履行默許塊。

列舉與原始值
原始值可所以字符串,字符,或任何整數或浮點數類型。每一個原始值必需在其列舉聲明中是獨一的。當整數用於原始值,假如指定的一些列舉成員沒有任何值,它們會主動遞增。

 enum Month: Int {
   case January = 1, February, March, April, May, June, July, August, September, October, November, December
}

let yearMonth = Month.May.rawValue
println("Value of the Month is: \(yearMonth).")

當我們下面的法式應用 playground 運轉,我們獲得以下成果:

Value of the Month is: 5.

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