zoukankan      html  css  js  c++  java
  • Swift语法基础:5

    在Siwft中的枚举类型以及结构体, 是和OC中差不多的, 但Swift中又有一些特性, 下面让我们来看看:


    1.枚举的声明及使用

    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.rawValue)
            }
        }
    }
    let ace = Rank.King
    let aceRawValue = ace.rawValue
    
    println("(ace), (aceRawValue)")
    // 打印出来的结果: (Enum Value), 13

    PS: 这里解释一下, 枚举类型第一个开始的参数都是1, 无论你是有多少case, 都会递增的, 比如例子的的Ace是1, 那么Two就是名副其实的2, Three就是3, 以此类推, 一直到King, 就是13, 而enum里面有一个方法, 这里面这个方法只是说可以在enum里定义方法, 但我这个例子并没有使用.


    2.枚举类型内添加Func方法以及Enum的时值

    enum Suit {
        case Spades, Hearts, Diamonds, Clubs
        case a
        func simpleDescription() -> String {
            switch self{
            case .Spades:
                return "spades"
            case .Hearts:
                return "hearts"
            case .Diamonds:
                return "diamonds"
            case .Clubs:
                return "clubs"
            default:
                return "a"
            }
        }
    }
    
    let hearts = Suit.Hearts
    let heartsDescription = hearts.simpleDescription()
    let spades = Suit.Spades.hashValue
    let a = Suit.a.hashValue
    println("spades is (spades),a is (a),(heartsDescription)")
    // 打印出来的结果:spades is 0, a is 4, hearts

    PS: 看到例子中, 我们知道enum是有时值的, 这个时值是从0 开始, 一直到最后一位, 而且不受enum里面有多少个case影响.


    3.结构体的声明和使用

    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()
    println(threeOfSpadesDescription)
    // 打印出来的结果: The 3 of spades

    PS: 结构体里面同样是可以嵌套Func方法使用.


    4.使用枚举类型获取时间

    enum ServerResponse{
        case Result(String, String)
        case Error(String)
    }
    
    let success = ServerResponse.Result("8:00 am", "18:00")
    let failure = ServerResponse.Error("Out of cheese")
    
    switch success {
    case let .Result(sunrise, sunset):
        let serverResponse = "Sunriseis at (sunrise) and sunset is at (sunset)."
        println(serverResponse)
    case let .Error(error):
        let serverResponse = "Failure... (error)"
        println(serverResponse)
    }
    // 打印出来的结果: Sunriseis at 8:00 am and sunset is at 18:00.

    PS: 在case let .Result()里面的sunrise和sunset是我们自己定义的, 这个可以根据个人爱好随意声明, 但如果是团队开发的话, 那就不要随便写了, 你懂的~


    好了, 这次我们就讲到这里, 下次我们继续~

  • 相关阅读:
    asp.net 生成PDF方法
    C# 缓存学习总结
    C# 缓存学习第一天
    C# 文件管理类 Directory
    C# 链接Sql和Access数据库语句
    SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之AlwaysOn可用性组搭建
    SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之建立活动目录域、DNS服务器和Windows故障转移群集(准备工作)
    SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)
    SQL Server ->> 利用CONVERT/STR/FORMAT函数把浮点型数据格式化/转换成字符串
    SQL Server ->> Computed Column(计算列)
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4333133.html
Copyright © 2011-2022 走看看