可选链(Optional Chaining)


可选链是一种请求或调用属性。方法,子脚本的过程。
可选性体现于请求或调用的目标当前可能为nil.若不为nil则成功调用。否则返回nil并将链失效。


调用可选链的返回结果与原结果类型同样,可是被包装成为了一个可选类型Optional.



这里因为roomCount返回为nil 所以运行else语句为count赋值为-1.

标注:在Beta3版本号公布时对Swift略微进行了改动,nil变成了keyword,而不再存在NilType的nil了。

可选链能够连续多层调用,如果样例:
john.residence?.address?

.street?.description()

若有方法返回optional则?

在括号后面。



类型转换


类型转换是一种检查实例类型的方式,也是让实例作为父类或者子类的一种方式。

在Swift中使用is或as来判断和判断他们是否为某个类或者某个协议。

is用于检查一个实例是否属于特定子类型,若果是则返回true不是则为false.注意这里是特定子类型。假设你定义了一个类并实例化它。然后检查它是否is这个类,编译器会报错告诉你这个is总是返回true.





向下转型


由于向下转型可能会失败,类型转换操作符会有两种不同的形式。

as? 返回一个optional value。即不成功返回nil。
as   则把向下转型和强制解包结合,不成功则执行时错误。



向下转换和OC,Java中的强转一样。并没有真正的改变实例。仅仅是简单的把它告诉编译器当做这个类来使用而已。



Any和AnyObject


Swift中没有像NSObject一样的全部类基类。

但有AnyObject能够表示不论什么class类型的实例。Any能够表示不论什么类型,除了方法类型。

当须要使用CocoaAPIs,一般接收一个[AnyObject]的数组。由于oc中没有明白类型的数组。当中存储的指针能够指向不论什么类的实例。


使用Any类型来和混合的不同类型一起工作,包含非class.




嵌套类型


Swift中是支持嵌套类型的。就像支持嵌套函数一样灵活。

你能够在枚举,类和结构体中定义支持嵌套的类型。



扩展(Extension)


扩展就是类似于Objective-C中的Category,只是Swift中的扩展没有名字。

以下列举Swift中的扩展能够做的事情:

--加入计算型属性和计算静态属性
--定义实例方法或类型方法
--提供新的构造器
--定义下标脚本
--定义和使用新的嵌套类型
--使一个已有类型符合某个协议


语法


使用keywordextension
extension SomeType { ... }

适配协议:
extension SomeType: SomeProtocol, AnotherProtocol { ... }
也称为在扩展中加入协议遵循者。

加入计算型属性




注意:扩展能够加入新的计算型属性,可是不能加入存储型属性,也不能够向已有属性加入属性观測器。

当然我们能够通过设置关联引用的方式来加入一个“属性”。须要用到Swift调用CPointer的知识以及objc/runtime的关联引用,当然这也不是真正意义的属性。而仅仅是一个关联。



构造器


扩展能向类中加入新的便利构造器。但不能加入新的指定构造器或者析构函数。
若使用扩展提供了一个新的构造器,有责任保证构造过程中让全部的实例都全然初始化。


方法




使用扩展为Int添加了一个方法,注意到这里的..<代替了当初的.. 这是在beta3时苹果对Swift语法做出的改动,主要是为了区分左闭右闭还是右开。

也能够在扩展中改动实例



下标脚本



甚至还能够在扩展中添加嵌套类型。



演示样例代码请点击这里



以上就是本篇博客所有内容,欢迎勘误和讨论。

Swift的可选链,类型转换和扩展的更多相关文章

  1. swift 学习- 19 -- 可选链式调用

    // 可选链式调用 是一种在当前值可能为 nil 的可选值上请求 和 调用属性, 方法以及下标, 如果 可选值有值, 那么调用就会成功, 如果可选值是 nil, 那么就会将返回 nil , // 多个 ...

  2. Swift中的可选链与内存管理(干货系列)

    干货之前:补充一下可选链(optional chain) class A { var p: B? } class B { var p: C? } class C { func cm() -> S ...

  3. 【Swift学习】Swift编程之旅---可选链(二十一)

    可选链Optional Chaining是一种可以在当前值可能为nil的可选值上请求和调用属性.方法及下标的方法.如果可选值有值,那么调用就会成功:如果可选值是nil,那么调用将返回nil.多个调用可 ...

  4. 学习Swift -- 可选链

    可空链式调用 可空链式调用是一种可以请求和调用属性.方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil).如果可空的目标有值,那么调用就会成功:如果选择的目标为空(nil),那么这 ...

  5. Swift 可选链-备

    在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型和可选链相关,下面来看看可选链. 可选链: 类图: 它们之间是典型的关联关系类图.这些类一般都是实体类, ...

  6. swift 注意事项 (十六) —— 可选链

    可选链(Optional Chaining) 我们都知道"可选型"是什么.那么可选链又是什么,举个样例解释一下: struct MyName{      var name } st ...

  7. 《从零开始学Swift》学习笔记(Day 26)——可选链

    原创文章,欢迎转载.转载请注明:关东升的博客 在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型和可选链相关,下面来看看可选链. 可选链: 类图: 它们之 ...

  8. Swift 可选链

    可选链(Optional Chaining)是一种可以请求和调用属性.方法和子脚本的过程,用于请求或调用的目标可能为nil. 可选链返回两个值: 如果目标有值,调用就会成功,返回该值 如果目标为nil ...

  9. swift学习笔记之-可选链式调用

    //可选链式调用 import UIKit /*可选链式调用(Optional Chaining) 1.在可选值上请求和调用该可选值的属性.方法及下标的方法,如果可选值有值,那么调用就会成功,返回可选 ...

随机推荐

  1. [转载] Python数据类型知识点全解

    [转载] Python数据类型知识点全解 1.字符串 字符串常用功能 name = 'derek' print(name.capitalize()) #首字母大写 Derek print(name.c ...

  2. 【转】Hive over HBase和Hive over HDFS性能比较分析

    转载:http://lxw1234.com/archives/2015/04/101.htm 环境配置: hadoop-2.0.0-cdh4.3.0 (4 nodes, 24G mem/node) h ...

  3. Python中的socket网络编程(TCP/IP,UDP)讲解

    在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套 ...

  4. PAT Basic 1018

    1018 锤子剪刀布 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输 ...

  5. 设计模式之建造者模式——Builder

    一.概述 Builder模式,中文名为建造者模式,又名生成器模式.构建者模式等,是创建型设计模式之一.用于将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 1.适用性: 对象 ...

  6. Lambert (兰伯特)光照模型

    Lambert (兰伯特)光照模型 是光源照射到物体表面后,向四面八方反射,产生的漫反射效果.这是一种理想的漫反射光照模型.如下图:这个是顶点函数处理后的该光照模型,因此看起来像素不够平滑. 漫反射 ...

  7. windons杀死8080进程

    1,netstat -aon|findstr "8080" //8080端口号 2,taskkill -PID 2976 -F //2976 ,8080端口号对应的进程号

  8. 【11】specified value,computed value,used value计算方法

    [11]specified value,computed value,used value计算方法 specified value(规范值): 计算方法如下: 如果样式表设置了一个值,使用这个值 如果 ...

  9. Linux暂停和恢复进程

    Linux暂停和恢复进程 kill -STOP 1234 将该进程暂停. 如果要让它恢复到后台,用kill -CONT 1234 (很多在前台运行的程序这样是不行的) 如果要恢复到前台,请在当时运行该 ...

  10. UITableView性能-圆角图片

    圆角图片因为GPU渲染会影响性能 参考:http://www.cocoachina.com/ios/20150803/12873.html http://blog.sina.com.cn/s/blog ...