//// main.swift// Swift物件導向之枚舉//// Created by Goddog on 15/7/17.// Copyright © 2015年 Goddog. All rights reserved.//import Foundationprint("Swift不僅是面向過程還是物件導向的,Swift可以定義枚舉、結構體、類3種物件導向的類型,用枚舉、結構體定義的變數屬於實值型別,用類定義的變數屬於參考型別,3種物件導向都支援定義儲存屬性、計算屬性、方法、下標、構造器和巢狀型別")print("Swift5種物件導向的程式單元:類、結構體、枚舉、擴充、協議")print("定義類型的步驟:1.聲明變數;2.建立執行個體;3.訪問屬性;4.調用方法;5.派生子類(枚舉和結構體不支援繼承)")//MARK: - 定義枚舉enum Season{ case Spring case Summer case Fall case Winter}//或enum Weekday{ case Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}//使用枚舉聲明變數var day: Weekday//使用已有枚舉賦值day = Weekday.Saturdayprint("結果是:\(day)")//MARK: - 枚舉值和switch語句var chooseDay = Weekday.Mondayswitch chooseDay{ case .Monday: print("周一") case .Tuesday: print("周二") case .Wednesday: print("周三") case .Thursday: print("周四") case .Friday: print("周五") case .Saturday: print("周六") default: print("周日")}//MARK: - 原始值//定義枚舉,指定原始值為Intenum Weekdays: Int{ case Monday, Tuesday = 1, Wednessday = 5, Thursday, Friday, Saturday, Sunnday}var days = Weekdays.Mondayprint("Monday is : \(days.rawValue)") //0是根據Tuesday=1自動判斷的days = .Fridayprint("Friday is : \(days.rawValue)") //7是根據Wednessday=5自動判斷的enum Seasons: Character{ //為每個枚舉指定原始值 case Spring = "s" case Summer = "u" case Fall = "f" case Winter = "w"}//根據原始值擷取枚舉var getSeason = Seasons(rawValue: "s")if getSeason != nil{ switch (getSeason!) { case .Spring: print("春") case .Summer: print("夏") case .Fall: print("秋") default: print("冬") }}//MARK: - 關聯值enum Planet{ //不同枚舉可以攜帶數量不等,類型不等的關聯值 case Mercury(weight: Double, density: Double, name: String) case Venus(Double, Double) case Earth(Double, String) case Mars(density: Double, name:String) case Jupiter case Saturn case Uranus case Nepturn}var p1 = Planet.Mercury(weight: 0.05, density: 5.43, name: "水星")var p2 = Planet.Venus(0.815, 5.25)var p3 = Planet.Earth(1.0, "地球")var p4 = Planet.Mars(density: 3.95, name: "火星")switch(p3){ case Planet.Earth(var weight,var name): print("\(name), \(weight)") default: break}switch (p1){ case let .Venus(weight, density): print("\(weight), \(density)") case let .Mercury(weight: w, density: d, name: n): print("\(w), \(d), \(n)") default: break}
Swift不僅是面向過程還是物件導向的,Swift可以定義枚舉、結構體、類3種物件導向的類型,用枚舉、結構體定義的變數屬於實值型別,用類定義的變數屬於參考型別,3種物件導向都支援定義儲存屬性、計算屬性、方法、下標、構造器和巢狀型別Swift5種物件導向的程式單元:類、結構體、枚舉、擴充、協議定義類型的步驟:1.聲明變數;2.建立執行個體;3.訪問屬性;4.調用方法;5.派生子類(枚舉和結構體不支援繼承)結果是:Swift物件導向之一.Weekday.Saturday周一Monday is : 0Friday is : 7春地球, 1.00.05, 5.43, 水星Program ended with exit code: 0