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()

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

查看全文
  • 相关阅读:
    极大似然估计理解与应用
    逻辑回归理解及代码实现
    《剑指offer》---数值的整数次方
    线性回归理解及代码实现
    二叉搜索树(BST)---python实现
    《剑指offer》---顺时针打印矩阵
    《剑指offer》---二进制中1的个数
    《剑指offer》---输出链表倒数第k个结点
    版本控制-Git服务器搭建和常用命令使用
    hbase伪分布式平台搭建(centos 6.3)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10699752.html
  • Copyright © 2011-2022 走看看