Swift3.0学习笔记-Nested Types

来源:互联网 发布:农田测亩仪软件下载 编辑:程序博客网 时间:2024/06/17 09:28

https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/NestedTypes.html#//apple_ref/doc/uid/TP40014097-CH23-ID242

   

        类似于Java的内部类, Swift可以在结构体、枚举和类中声明嵌套结构体、枚举和类, 且通过外部类/结构体/枚举调用内部数据结构。 Swift支持多级嵌套, 但尽量层级不要太深。

struct BlackjackCard {        // 字符型枚举    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结构体类型的属性rank、suit和description    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类型中声明了枚举Suit、Rank, 而内部枚举Rank里又声明了结构体Value。 这是一个典型的嵌套数据类型定义的例子。


使用嵌套数据类型:

let theAceOfSpades = BlackjackCard(rank: .ace, suit: .spades)print("theAceOfSpades: \(theAceOfSpades.description)")// 输出 "theAceOfSpades: suit is ♠, value is 1 or 11"


使用嵌套数据类型:

let heartsSymbol = BlackjackCard.Suit.hearts.rawValue // heartsSymbol 是字符型的 "♡"
说明:跟Java/OC类似,从外部类逐级调用。


小结: 

1、嵌套数据类型就是在结构体、枚举和类中再定义结构体、枚举和类, 语法不变。

2、在使用嵌套数据类型时,要从外到内访问;


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 身上长红包很痒怎么办 喝酒后身上很痒怎么办 身上长了小红包怎么办 腿长红包很痒怎么办 14岁脸上有雀斑怎么办 皮肤痒起红点或红块怎么办 脸过敏像长痱子怎么办 脸上有淡淡白块怎么办 过敏了脸上会起小疙瘩怎么办 脸过敏出红疙瘩怎么办 脸上长红色的小疙瘩怎么办 脸上都是小米粒痘痘怎么办 小孩身上起风团疙瘩怎么办 脸上长疙瘩很痒怎么办 一个多月宝宝脸上有湿疹怎么办 脸上发红发痒起疙瘩怎么办 脸过敏了怎么办最简单 胸下垂应该怎么办19岁 身上的肉特别松怎么办 才30岁脸部松弛怎么办 脸上的皮肤很松怎么办 面部皮肤干燥起皮刺痛怎么办 脸上的皮肤很粗糙怎么办 脸上又红又痒怎么办 鲜红斑痣增生了怎么办 激光祛斑后色素沉着怎么办 白球鞋洗后发黄怎么办 夏天出汗妆花了怎么办 买的小产权房怎么办 嘴唇起皮怎么办小妙招 照相嘴巴是歪的怎么办 鼻子笑起来很宽怎么办 财运不好怎么办最近你有偏财 从小缺爱的人怎么办 一到晚上就怕死怎么办 碰到不讲理的人怎么办 遇到不讲理的人怎么办 蚰蜓虫子咬了怎么办 腰肌损伤怎么办恢复快 腰闪了怎么办最有效 墨兰严重烂根怎么办