Swift简明教程(五)枚举与结构体

7 篇文章 0 订阅

Swift简明教程(五)枚举与结构体


使用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.toRow()


试验
编写一个函数用来比较两个Rank枚举值

在上面的代码中,枚举类型的原始值是Int类型,定义的时候只明确了第一个,后面的依次递增。当然也可以使用浮点数或者字符串作为枚举类型的值。


使用toRawfromRaw可以在枚举类型和原始值之间进行转换。

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


枚举类型成员的值是一个实际的值,而不仅仅是他们原始值的另外一种写法。事实上,你可以不提供有意义的原始值。

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


试验Suit添加一个color方法,当枚举值为Spades或者Clubs的时候返回”black”,否则返回”red”。


每个枚举成员都可以关联一些值。同一个枚举类型的实例成员都能够关联不同的值。在创建枚举类型的实例时可以给枚举成员关联上一些值。关联的值与原始的值不一样:同一个枚举类型的所有成员中,原始值都是一样的,在定义枚举类型的时候就已经确定了。


例如从服务器上获取日落和日出的实际。服务器会返回正确的信息或者出错。

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)"
}


试验ServerResponseswitch添加第三个case分支。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值