博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift 3.0 新特征
阅读量:6358 次
发布时间:2019-06-23

本文共 1629 字,大约阅读时间需要 5 分钟。

目录

限定作用域访问级别:

在swift 3.0 之前,swift 提供3种不同的访问级别:

1.public(公开)
2.internal(内部)
3.private(私用)
默认的访问级别是internal,这意味着此成员只能在模组(module)内可见。如果要让其能够被模组外的成员访问,那么就要将其设置成public。此外就是private,这意味着私有成员能够在文件内部可见。

在swift 3.0当中,我们将迎来另外一种访问级别,private 将会被重新命名为 fileprivate :即文件的私有成员只能够在文件内部可见;我们将得到第四种访问级别就是 private ,这也就说即使在同一个文件当中,私有成员也只能够在对应的作用域当中可见。因此,swift 3.0中,最终的访问级别就是:

1.public(公开)
2.internal(内部)
3.fileprivate(文件内私有)
4.private(私有)

移除 ++ 和 --

自增运算符 ++ 与自减运算符 -- 将被移除,取而代之的便是 count+=1 与 count-=1

例如:

while count < 10{    count += 1}while num < 10{    num -= 1}

将inout 声明调整为类型修饰

参数是一种不可修改的拷贝,如果你想修改你的传入参数,并禁止拷贝的,那么您可以将其声明为 inout .

在swift 2.2中:

func myfunction(inout input:Int){}

而在swift 3.0中,将调整为类型修饰,如;

func myfunction(input : inout Int){}

inout 限制为只能获取 @noescape 的上下文

inout的另一个改变,是其的捕获机制受到限制。

func escape(f:()->()){}func example(x :inout Int){    escape{ _ = x }}

一个名为 escape()的函数,它接受一个方法作为其参数。在 example() 方法当中,我们引入 inout 类型的 x 的参数,并将其传递到 escape方法内。

当 escape() 函数对 inout x 进行操作时,会造成一个问题,由于 inout 的开销很大。inout 会对传入的变量进行修改 ,而这个时候,并不确定 example()函数是否能够调用其作用域之外的函数。

为了解决这个问题,我们可以使用 @noecape 来标记:

func escape( f:@noecape()->()){}//swift 3.0之前的写法:func escape(@noescape f:()->()){}func exmaple(x:inout Int){   escape{ _ = x}}

这也就意味着,我将告诉编译器,我传递的这个函数 不会使用任何作用域范围之外的东西,因此程序能够正常运行。

将 @noescape 和 @autoclosure 转化成类型特质

func escape(f: @noescape ()->()){}func noEscape(f :@autoclosure ()->()){}

将用于关联类型声明的 typealias 替换成 associatedtype

protocol Prot{    associatedtype Container : SequenceType}

这表示您需要明确告知Container 随后会关注哪种类型

extension prot{    typealias Element = Container.Generator.Element}

这种用法与 #define 类似

转载于:https://www.cnblogs.com/crash-wu/p/5863017.html

你可能感兴趣的文章
Exchange邮箱登陆界面添加验证码功能完美解决方案
查看>>
Linux网络服务_主从DNS配置示例_Redhat Enterprise 5.9
查看>>
java通过Stream对list集合分组
查看>>
中国第一望世家族唐朝宰相裴度后裔在松滋
查看>>
组策略之IE安全设置
查看>>
导出SQL2000数据库文件
查看>>
rapid-pvst向mstp迁移
查看>>
RHEL6U3安装64bit Oracle 11gR2
查看>>
MySQL系列第二篇:MySQL可视化工具Navicat for MySQL安装配置和使用
查看>>
QStandardItemModel角色控制及QTreeView添加不同的右键菜单
查看>>
cloudflare ppt
查看>>
一例所有文件都打不开的数据恢复过程
查看>>
Oracle渗透,记录一下
查看>>
像看电影一样学OSPF
查看>>
说说加密与解密这对冤家 一
查看>>
安装 Hyper-V Server 2012 R2
查看>>
设定Windows计划任务定期执行PowerShell脚本
查看>>
第一章 MongoDb概述
查看>>
Android源码解析——AsyncTask
查看>>
第十二周学习进度条
查看>>