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

来源:互联网 发布:数据库建模工具 知乎 编辑:程序博客网 时间:2024/05/01 23:54

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.Acelet 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.Heartslet 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