swift类型嵌套
2016-01-22 09:38
316 查看
/**
1.类型嵌套实例
2.类型嵌套引用
枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,swift允许你定义类型嵌套,可以在枚举类型、类和结构体中定义支持嵌套类型
要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套
*/
//类型嵌套实例
struct BlackjackCard {
//嵌套定义枚举型Suit
enum Suit: Character {
case Spades =
"♠︎", Hearts =
"♡", Diamonds = "♢", Clubs =
"♣︎";
}
//嵌套定义枚举类型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;
}
}
let theAceOfSpades =
BlackjackCard(rank: .Ace, suit: .Spades);
print("theAceOfSpades:
\(theAceOfSpades.description)");
//类型嵌套的引用
/**
在外部对嵌套类型的引用,以被嵌套类型的名字为前缀,加上索要引用的属性名
*/
let heartsSymbol =
BlackjackCard.Suit.Hearts.rawValue;
print(heartsSymbol);
1.类型嵌套实例
2.类型嵌套引用
枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,swift允许你定义类型嵌套,可以在枚举类型、类和结构体中定义支持嵌套类型
要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套
*/
//类型嵌套实例
struct BlackjackCard {
//嵌套定义枚举型Suit
enum Suit: Character {
case Spades =
"♠︎", Hearts =
"♡", Diamonds = "♢", Clubs =
"♣︎";
}
//嵌套定义枚举类型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;
}
}
let theAceOfSpades =
BlackjackCard(rank: .Ace, suit: .Spades);
print("theAceOfSpades:
\(theAceOfSpades.description)");
//类型嵌套的引用
/**
在外部对嵌套类型的引用,以被嵌套类型的名字为前缀,加上索要引用的属性名
*/
let heartsSymbol =
BlackjackCard.Suit.Hearts.rawValue;
print(heartsSymbol);
相关文章推荐
- swift类型检查
- swift可选链
- swift自动引用计数
- swift析构过程
- swift构造过程
- swift继承
- 【iOS】swift-如何理解 if let 与guard?
- 【iOS】swift-如何理解 if let 与guard?
- swift学习笔记之-类和结构体
- LeetCode 2. Add Two Numbers swift
- LeetCode 01 Two Sum swift
- Swift 使用代理和闭包(closure)反向传值
- OC和Swift中的static
- OC和Swift中的static
- Swift Control Flow控制流
- swift论坛正式上线
- swift2.0 UIImagePickerController 拍照 相册 录像
- 自学 iOS – 三十天三十个 Swift 项目
- Swift学习笔记:类和结构
- Swift-11-协议(Protocols)