码迷,mamicode.com
首页 > 编程语言 > 详细

Swift学习4---枚举和结构体

时间:2015-05-14 00:37:21      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

1.枚举

  使用enum创建枚举——注意Swift的枚举可以关联方法:

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.Ace

let aceRawValue = ace.rawValue

  使用rawValue在原始(raw)数值和枚举值之间进行转换:

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

  注意枚举中的成员值(member value)是实际的值(actual value),和原始值(raw value)没有必然关联。

  枚举的成员值是实际值,并不是原始值的另一种表达方法。实际上,如果原始值没有意义, 你不需要设置 

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

  除了可以关联方法,枚举还支持在其成员上关联值,同一枚举的不同成员可以有不同的关联的值:

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

2.结构体

  Swift使用struct关键字创建结构体。结构体支持构造器和方法这些类的特性。结构体和类的最大区别在于:结构的实例按值传递(passed by value),而类的实例按引用传递(passed by reference)。

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

 

Swift学习4---枚举和结构体

标签:

原文地址:http://www.cnblogs.com/ShawnLi/p/4502172.html

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