文档章节

Swift3废除特性(二)

博为峰教研组
 博为峰教研组
发布于 2017/03/31 15:32
字数 619
阅读 4
收藏 0

    

3. 移除函数参数的 var 标记

在 Swift 函数中,参数默认是常量。过去可以在参数前加关键字 var 将其定义为变量,这样函数内部就可以对该参数进行修改(外部的参数任然不会被修改)。

var age = 22

add(age)

 

func add(var age:Int) {

    age += 1

}

现在这种做法已经被废弃,Swift 3 不再允许开发者这样来将参数标记为变量了。

4所有函数参数都必须带上标签

过去如果一个函数有多个参数,调用的时候第一个参数无需带标签,而从第二个参数开始,必须要带标签。

let number = additive(8, b: 12)

 

func additive(a:Int, b:Int) -> Int{

    return a + b

}

现在为了确保函数参数标签的一致性,所有参数都必须带上标签。

这个变化可能会造成我们的项目代码要进行较大的改动,毕竟涉及的地方很多。所以苹果又给出了一种不用给第一个参数带标签的解决方案。即在第一个参数前面加上一个下划线。

let number = additive(8, b: 12)

 

func additive(_ a:Int, b:Int) -> Int{

    return a + b

}

这个只是方便我们代码从 Swift2 迁移到 Swift3 的一个折中方案,可以的话还是建议将所有的参数都带上标签。

5函数声明和函数调用都需要括号来包括参数

我们可以使用函数类型作为参数 ,对于一个参数是函数、返回值也是函数的函数。原来我们可能会这么写:

func g(a: Int -> Int) -> Int->Int { ... }

当这样非常难以阅读,很难看出参数在哪里结束,返回值又从哪里开始。在 Swift 3 中变成这么定义这个函数:

func g(a:(Int) -> Int) -> (Int) -> Int { ... }

6. Selector 不再允许使用 String

假设我们给按钮添加一个点击事件响应,点击后执行 tapped 函数。以前可以这么写:

button.addTarget(responder, action: "tapped", forControlEvents: .TouchUpInside)

但由于按钮的 selector 写的是字符串。如果字符串拼写错了,那程序会在运行时因找不到相关方法而崩溃。所以 Swift 3 将这种写法废除,改成 #selecor()。这样就将允许编译器提前检查方法名的拼写问题,而不用再等到运行时才发现问题。

button.addTarget(self, action:#selector(tapped), for:.touchUpInside)

 

© 著作权归作者所有

博为峰教研组
粉丝 52
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
Xcode9和Swift4新特性

XCode9新特性 1. 支持远程调试 2. Xcode绑定Github账号 3. 支持Swift类重命名 4. Swift低版本兼容 5. Main Thread Checker 6. 模拟器支持多开 7. 标示功能 8. 协议自动补全 9. 代码段自动抽出...

LvesLi
2017/10/17
0
0
AppCode 2016.3 EAP 发布,改进 Swift 解析性能

AppCode 2016.3 EAP 发布更新了,版本代号为 build 163.7743.19,该版本改进了 Swift 解析性能,Swift3 在调试器以及其他更多地方被支持。 其他更新: Swift3 的支持 与 Swift3 集合渲染相关...

局长
2016/11/11
1K
4
Swift3 concurrency

转自我的github: https://github.com/uniquejava/iOSConcurrencyDemo swift3 concurrency This repo is the steps breaking down from this [excellent tutorial][1] and an update for swif......

cyper
2016/10/27
27
0
苹果正式发布 Swift 3.0 Preview 1 版本,同时发布 Xcode 8 Beta 版

随着WWDC 2016的召开,苹果正式发布了Swift 3.0 Preview 1,这是苹果Swift 3语言的首个稳定开发者预览版。 苹果在其swift.org官方博客中称,Preview 1版本比代码库中打包的snapshot版本稳定很...

研习君
2016/06/14
8.3K
17
Facebook 针对 iOS 推出 Swift 开发者工具包

Swift3中文网消息,Facebook为iOS开发者推出了Swift开发者工具包(SDK),开发者可以通过Github链接下载https://github.com/facebook/facebook-sdk-swift。目前这一SDK基于Swift2,不过Faceboo...

研习君
2016/07/15
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之访问者模式

定义 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which......

陈年之后是青葱
昨天
9
0
PhotoShop 高级应用 : 分层云彩 - 简单闪电效果

1.创建黑白渐水平渐变图层 2.选择滤镜选项卡: 渲染--->分层云彩功能 3.将滤镜-云彩效果渲染后的图层进行反相操作 【此时出现闪电效果】 6.调整色阶,使得闪电效果更明显 7.创建剪贴蒙版:色...

东方墨天
昨天
9
0
三种实现Android主界面Tab的方式

三种实现Android主界面Tab的方式 https://www.cnblogs.com/caobotao/p/5103673.html

shzwork
昨天
9
0
java8-Optional类

背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car...

春天springcarter
昨天
11
0
py 登录github时token以及cookie的应用

import requestsfrom bs4 import BeautifulSoup## 获取tokenr1 = requests.get('https://github.com/login')s1 = BeautifulSoup(r1.text,'html.parser')token = s1.find(name='input',......

子枫Eric
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部