zoukankan      html  css  js  c++  java
  • Swift学习——A Swift Tour 枚举和结构体

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/zhenyu5211314/article/details/28588095

    Enumerations and Structures


    Enumerations   枚举的使用

    使用 enum 定义一个枚举,枚举里面能够关联方法,比方下文中的描写叙述方法

    enum Rank: Int {
        case Ace = 1
        case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
        case Jack, Queen, King
        func simpleDescription() -> String {
            switch self {
            case .Ace:
                return "ace"
            case .Jack:
                return "jack"
            case .Queen:
                return "queen"
            case .King:
                return "king"
            default:
                return String(self.toRaw())
            }
        }
    }
    let ace = Rank.Ace
    let aceRawValue = ace.toRaw()
    上面的样例中。定义的原始值枚举类型是Int型,仅仅须要给第一个定义的枚举值赋初值。其它的值就会按顺序分配,你也能够使用浮点型和String类型作为枚举的原始类型

    使用 toRaw 和 fromRaw 两个函数,实现原始值和枚举值之间进行切换

    if let convertedRank = Rank.fromRaw(3) {
        let threeDescription = convertedRank.simpleDescription()
    }

    事实上依据上面两个代码。不难分析,fromRaw 的功能是,在參数中提供枚举的实际值(如3)。通过实际值转换成枚举的原始值

    toRaw 的功能是,依据枚举的原始值(如Ace),转化成实际值,也就是Ace实际代表的值1

    enum Suit {
        case Spades, Hearts, Diamonds, Clubs
        func simpleDescription() -> String {
            switch self {
            case .Spades:
                return "spades"
            case .Hearts:
                return "hearts"
            case .Diamonds:
                return "diamonds"
            case .Clubs:
                return "clubs"
            }
        }
    }
    let hearts = Suit.Hearts
    let heartsDescription = hearts.simpleDescription()
    在枚举中的描写叙述函数。case 中的内容应该带上 . ,由于self是存在的,  .Spades 表示的是Sapdes 的枚举值

    枚举还支持成员上的关联,同一个枚举的不同成员能够关联不同的值:

    enum ServerResponse {
        case Result(String, String)
        case Error(String)
    }
     
    let success = ServerResponse.Result("6:00 am", "8:09 pm")
    let failure = ServerResponse.Error("Out of cheese.")
     
    switch success {
    case let .Result(sunrise, sunset):
        let serverResponse = "Sunrise is at (sunrise) and sunset is at (sunset)."
    case let .Error(error):
        let serverResponse = "Failure...  (error)"
    }


    Structures  结构体的使用

    使用 struct 创建结构,结构支持构造器和方法这些特性,结构和类的最大差别:结构体的实例是值传递,类的实例是引用传递

    struct Card {
        var rank: Rank
        var suit: Suit
        func simpleDescription() -> String {
            return "The (rank.simpleDescription()) of (suit.simpleDescription())"
        }
    }
    let threeOfSpades = Card(rank: .Three, suit: .Spades)
    let threeOfSpadesDescription = threeOfSpades.simpleDescription()

    下一节我们说说协议和扩展

查看全文
  • 相关阅读:
    checkListbox的单选
    IP地址控件CIPAddressCtrl类的使用
    C++ Socket编程步骤
    环形缓冲区
    隐式链接和显示链接的区别
    memset、memcpy的使用方法!
    cetlm下载地址
    安装 GCC
    centos 配置代理
    make软件包安装
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10699752.html
  • Copyright © 2011-2022 走看看