码迷,mamicode.com
首页 > 其他好文 > 详细

枚举和结构

时间:2015-07-01 18:33:33      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:结构   enum      

//: Playground - noun: a place where people can play


import UIKit


//使用 enum 来创建枚举。如同类和其他命名类型,枚举也可以有方法

enum Rank: Int {

    case Ace = 1

    case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten

    case Jack, Queen, King

    

    func simpleDecription() -> 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.Ace

let aceRawValue = ace.rawValue

//在如上例子中,原始值的类型是 Int 所以可以只指定第一个原始值。其后的原始值都是按照顺序赋值的。也可以使用 字符串或浮点数作为枚举的原始值。

//if let convertedRank = Rank.Eight {

//    let threeDescription = convertedRank.simpleDecription()

//}

//枚举的成员值就是实际值,而不是其他方式写的原始值。实际上,有些情况是原始值,就是你不提供的时候。

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

//使用 struct 创建结构体。结构体支持多个与类相同的行为,包括方法和构造器。一大重要的区别是代码之间的传递 总是用拷贝(值传递),而类则是传递引用。

struct Card {

    var rank: Rank

    var suit: Suit

    

    func simpleDescription() -> String {

        return "The \(rank.simpleDecription()) of \(suit.simpleDescription())"

    }

}

let threeOfSpades = Card(rank: .Three, suit: .Spades)

let threeOfSpadesDescription = threeOfSpades.simpleDescription()

//一个枚举的实例成员可以拥有实例的值。相同枚举成员实例可以有不同的值。你在创建实例时赋值。指定值和原始值的 区别:枚举的原始值与其实例相同,你在定义枚举时提供原始值。

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

switch failure {

case let .Result(sunrise, sunset):

    let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)"

case let .Error(error):

    let serverResponse = "Failure ... \(error)"

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

枚举和结构

标签:结构   enum      

原文地址:http://blog.csdn.net/wa1065908163/article/details/46710811

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!