Swift枚舉和結(jié)構(gòu)體(Enumerations and Structures)

不錯的參考: Enum進階

使用enum創(chuàng)建枚舉,像類和其他所有類型那樣,枚舉可以有方法,供訪問。

//  ViewController.swift
//  Swift枚舉和結(jié)構(gòu)體
//
//  Created by Hunter on 20/01/2017.
//  Copyright ? 2017 Hunter. All rights reserved.
//

import UIKit

private enum Suit {
    case spades, hearts, diamonds, clubs
    func simpleDescription() -> String {
        switch self {
        case .spades:
            return "spades,簡單描述--simpleDescription"
        case .hearts:
            return "hearts--simpleDescription"
        case .diamonds:
            return "diamonds--simpleDescription"
        case .clubs:
            return "clubs--simpleDescription"
        }
    }

    func color() -> UIColor {
        switch self {
        case .spades, .clubs:
            return UIColor.black
        case .diamonds, .hearts:
            return UIColor.red
        }
    }
}

private let hearts = Suit.hearts
private let heartsDescription = hearts.simpleDescription()

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print(hearts,heartsDescription)
        view.backgroundColor = Suit.clubs.color()
        /*
         輸出:hearts hearts--simpleDescription
         視圖的背景顏色為黑色
         */
    }
}

再看一個枚舉的簡單使用

//
//  ViewController.swift
//  Swift枚舉和結(jié)構(gòu)體
//
//  Created by Hunter on 20/01/2017.
//  Copyright ? 2017 Hunter. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    enum serverResponse {
        case result(String?, String?)
        case failure(String)

        func raw() -> AnyObject {
            switch self {
            case .result:
                return ("1", "2") as AnyObject
            case .failure:
                return ("3" as AnyObject)
            }
        }
    }

    let succes = serverResponse.result("日出時間: 8:00 AM", "日落時間: 19: 00 PM")
    let failure = serverResponse.failure("失敗")

    override func viewDidLoad() {
        super.viewDidLoad()

        serverResponseTest()
        print(serverResponse.result(nil,nil).raw())
        /*
         輸出:
         日出時間: 8:00 AM 日落時間: 19: 00 PM
         ("1", "2")
         */
    }

    func serverResponseTest() {
        switch succes {
        case let .result(sunrise, sunset):
            if let rise: String = sunrise, let set: String = sunset{
                print(rise, set)
            }
        case let .failure(message):
            print(message)
        }
    }

}

結(jié)構(gòu)體同類很相似,它們最大的區(qū)別就是一個結(jié)構(gòu)體傳值,類傳引用.

//  ViewController.swift
//  Swift枚舉和結(jié)構(gòu)體
//
//  Created by Hunter on 20/01/2017.
//  Copyright ? 2017 Hunter. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    struct Person {
        var wife: String?
        var name: String
        var age: Int

        func who() -> String {
            return ("name:\(name),age:\(age)")
        }

    }

    let xiaoMing = Person.init(wife: nil, name: "小明", age: 28)

    override func viewDidLoad() {
        super.viewDidLoad()
        print(xiaoMing,xiaoMing.who())
    }

}

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

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

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