《swift2.0 官方教程中文版》 第2章-20嵌套类型

《swift2.0 官方教程中文版》 第2章-20嵌套类型,第1张

概述import Foundation /*嵌套类型实例***********************************************/ //下面这个例子定义了一个结构体 BlackjackCard (二十一点),用来模拟 BlackjackCard 中的扑克牌点数。jackCard 结构体包含2个嵌套定义的枚举类型 Suit 和 Rank 。 struct BlackjackCard


import Foundation


/*嵌套类型实例***********************************************/


//下面这个例子定义了一个结构体 BlackjackCard (二十一点),用来模拟 BlackjackCard 中的扑克牌点数。jackCard 结构体包含2个嵌套定义的枚举类型 Suit Rank

struct BlackjackCard {

// 嵌套定义枚举类型Suit

enum Suit: Character {

case Spades = "1",Hearts = "2",Diamonds = "3",Clubs = "4"

}

// 嵌套定义枚举型Rank

enum Rank: Int {

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

case Jack,Queen,King,Ace

struct Values {

let first: Int,second: Int?

}

var values: Values {

switch self {

case .Ace:

return Values(first: 1,second: 11)

case .Jack,.Queen,.King:

return Values(first: 10,second: nil)

default:

return Values(first: self.rawValue,second: nil)

}

}

}

// BlackjackCard的属性和方法

let rank: Rank,suit: Suit

var description: String {

var output = "suit is \(suit.rawValue),"

output += "value is \(rank.values.first)"

if let second = rank.values.second {

output += " or \(second)"

}

return output

}

}


//枚举型的 Suit 用来描述扑克牌的四种花色,并分别用一个 Character 类型的值代表花色符号。

//枚举型的 Rank 用来描述扑克牌从 Ace ~10,J,Q,K,13张牌,并分别用一个 Int 类型的值表示牌的面值。(这个 Int 类型的值不适用于 Ace,K 的牌)

let theAceOfSpades = BlackjackCard(rank: .Ace,suit: .Spades)

print("theAceOfSpades: \(theAceOfSpades.description)")

// 打印出 "theAceOfSpades: suit is ?,value is 1 or 11"


//尽管 Rank Suit 嵌套在 BlackjackCard ,但仍可被引用,所以在初始化实例时能够通过枚举类型中的成员 名称单独引用。在上面的例子中 description 属性能正确得输出对 Ace 牌有111两个值。




/*嵌套类型的引用***********************************************/

//在外部对嵌套类型的引用,以被嵌套类型的名字为前缀,加上所要引用的属性名:

let heartsSymbol = BlackjackCard.Suit.Hearts.rawValue

print("heartsSymbol is \(heartsSymbol)")

// 红心的符号 "?"


//对于上面这个例子,这样可以使 Suit,Rank, Values 的名字尽可能的短,因为它们的名字会自然的由定义 它们的上下文来限定。

总结

以上是内存溢出为你收集整理的《swift2.0 官方教程中文版》 第2章-20嵌套类型全部内容,希望文章能够帮你解决《swift2.0 官方教程中文版》 第2章-20嵌套类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1081221.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存