对照Java学习Swift--嵌套类型(Nested Types)
来源:互联网 发布:数据录入平台 编辑:程序博客网 时间:2024/06/06 08:50
这个很简单,就是在类型的内部定义一个类型,跟Java中的内部类很相似,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。
嵌套类型实践
看个例子,也是apple的官网上拿过来的:
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 }}
看下怎样定义BlackjackCard的实例:
let theAceOfSpades = BlackjackCard(rank: .Ace, suit: .Spades)print("theAceOfSpades: \(theAceOfSpades.description)")
尽管Rank和Suit嵌套在BlackjackCard中,但它们的类型仍可从上下文中推断出来,所以在初始化实例时能够单独通过成员名称(.Ace和.Spades)引用枚举实例。
引用嵌套类型
在外部引用嵌套类型时,在嵌套类型的类型名前加上其外部类型的类型名作为前缀:
let heartsSymbol = BlackjackCard.Suit.Hearts.rawValue
这一节很简单。
0 0
- 对照Java学习Swift--嵌套类型(Nested Types)
- Swift 嵌套类型(Nested Types)
- Swift学习笔记18——嵌套类型(Nested Types)和类型转换(Type Casting)
- 对照Java学习Swift--类型转换(Type Casting)
- 对照Java学习Swift--集合类型
- 对照Java学习Swift--集合类型
- Swift nested types
- 对照Java学习Swift--函数(Functions)
- 对照Java学习Swift--枚举(Enumerations)
- 对照Java学习Swift--方法(Methods)
- 对照Java学习Swift--下标(Subscripts)
- 对照Java学习Swift--继承(Inheritance)
- 对照Java学习Swift--扩展(Extensions)
- 对照Java学习Swift--协议(Protocols)
- 对照Java学习Swift--泛型(Generics)
- Swift学习:2.19 嵌套类型
- Swift学习笔记系列——(19)嵌套类型
- swift学习- 嵌套类型(二十)
- 小白上的cruskal简洁代码。
- 宏和函数的区别
- hdu1166 敌兵布阵【解法一】
- JavaScript继承详解
- 打印杨辉三角
- 对照Java学习Swift--嵌套类型(Nested Types)
- eclipse下将solr发布为web项目
- 求一个数的二进制逆序之后所对应的数
- hdu1754 I Hate it
- Project facet Java 1.8 is not supported by target runtime Apache Tomcat v7.0.
- 查找算法
- 判断两个顶点之间是否联通,是否有长度为K的路径
- Github学习之RecyclerView实现View滑动折叠效果
- 计算机存储形式与进制转换