加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift语法基础:5 - Swift的枚举和结构体

发布时间:2020-12-14 02:20:01 所属栏目:百科 来源:网络整理
导读:在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() - Strin

在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是我们自己定义的,这个可以根据个人爱好随意声明,但如果是团队开发的话,那就不要随便写了,你懂的~


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读