Swift3.0 复习概要(1)

概览

  • 类和结构体的区别在于结构体总是copy的。而类是传递引用
  • 用Throw来抛出异常,用Throws来表示一个函数可以抛出异常。
  • 不管函数是否抛出异常,defer所包围的语句都会被执行
  • Swift中不能为非可选类型的变量赋值为nil。在Swift中,nil表示值为空。而在OC中,nil表示对象不存在。
  • 断言会终止程序运行,而抛出异常则不会。
  • 断言会在条件判断为false的时候执行。
  • 可选类型解包的一个特殊形式:
    “var colorNameToUse = userDefinedColorName ?? defaultColorName”
  • Swift的逻辑判断是“从左到右”的
  • foundation被import之后,可以在String对象上使用NSString的方法,而不用转换类型

String

  • String是一个“值类型”,它指的是在传参or赋值的时候,值会被拷贝。

数组

  • 使用数组的时候,如果要判空,最好使用isEmpty。因为对于某些不遵循hasRandomAccess协议的集合类来说,使用count属性会造成遍历。
    但是!!!如果数组为nil,使用isEmpty会报错!最好先用nil来判断一下
  • 如果要移除最后一个项目,可以使用removeLast()来避免遍历。
  • 遍历时,如想同时获取index和value可以使用:


Set

  • Set的内容是无序且唯一的。如果顺序不重要,但是需要保证每个数据只出现一次,可以使用Set来代替Array
  • Set的声明必须带有Set关键字,因为如果只是用类型提示功能的话,set的写法和array的写法一毛一样:


  • Set是无序的,因此遍历的时候,每次结果都不一致。如果希望排序,可以调用sorted()方法。该方法会让set内容升序排列。
    如果希望降序排列,可以调用sorted(by:>)方法。

字典

  • 字典的键必须遵从Hashable协议。
  • 字典的键不一定是string类型。反正只要保证key是同一类型,value是同一类型就OK

for-in loop

  • 灵活使用闭区间操作符 … for index in a…b 表示index从 a 到 b 取值,包含a和b

Switch

  • 可以进行区间比较。详情如图:


  • 可以使用元组作为条件语句:


  • 如果被switch对象满足多个case,则只走第一个case的语句。其他case将被忽略掉。

  • switch可以和where联用:


  • 使用statementLabel你可以给自己的循环or条件语句起个名字。在多重嵌套时可以方便地通过名称来告知编译器需要break 或者 continue哪个语句。


guard语句:

在条件不满足时才执行。和if完全相反
guard一定要跟一个else!


函数

  • 无返回值的函数其实会返回一个Void,它是一个空的元组。
  • 可以通过设定返回值为元组类型来返回多个值:


  • 元组名在函数定义返回值的时候就被指定了,所以在填写返回值的时候不必再给它命名。同时,接收函数返回值的那个对象也可以通过点下标来获取元组的每一个值:


  • 嵌套函数:是一个有名字,并且可以捕获其封闭函数域内值的闭包。

闭包

  • which is a closure type。也就是说,怎么排序,你可以说了算。
    PS:排序算法要求返回的结果遵循:如果str1可以出现在str2前面,返回true。否则,返回false。

  • sorted(by)方法重载了运算符,因此可以直接输入大于小于符号来表示需要升序还是降序

  • 当函数的最后一个参数为闭包的时候,可以使用尾随闭包,来避免由于闭包本体过长造成调用语句的可读性的下降。例如:


  • 逃逸闭包:多用来做函数回调。它表示一个闭包会在函数返回之后才被调用。逃逸闭包被存储在函数外部的某个地方,所以当函数return了之后,闭包也不会被释放掉。

  • 由于闭包也是函数的一种特殊类型,所以调用的时候一样要加括号!

  • 自动闭包:指的是直接将一段代码作为闭包传递给某个变量,系统可以自动将它作为闭包来处理。更为优雅的写法是,给函数的闭包参数添加@autoclosure关键字,这样的话,你可以直接把代码传递给该自动闭包参数。
    func serve(customer customerProvider: @autoclosure ()->String ) {
    print("Now serving (customerProvider())")
    }

serve(customer: customers.remove(at: 0))

枚举

  • Swift中的枚举常量可以被赋值为String, character,Int or Float类型。

  • 枚举常量用关键字case来标注:


  • 在对枚举进行switch操作的时候,如果case常量有关联值,可以对每个关联值 分别展开:


  • 枚举变量也可以从raw value来创建。如图:



    返回的值是一个可选类型。如果Plante枚举中没有raw value为7 的常量,那么该方法返回nil。

  • 递归枚举:如果一个枚举中的某些常量包含和自己同类型的关联值,那么这个枚举就是递归枚举。递归枚举用indirect来表示。

                                                     ![](http://upload-images.jianshu.io/upload_images/2296348-d435401b8c02fb63.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
  • 嵌套枚举:
    enum Character {
    enum Weapon {
    caseBow
    caseSword
    caseLance
    caseDagger
    }
    enum Helmet {
    caseWooden
    caseIron
    caseDiamond
    }
    caseThief
    caseWarrior
    caseKnight
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容