首页 > 其他 > 详细

枚举和结构

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

//: 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)"

}


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

枚举和结构

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!