Swift4.0复习函数
1.函数的定义与调用:
一个函数定义的基本语法如以下代码所示:
func function_name (param1: Int, param2: Float, param3: Double) -> return_type {
// function-body
/* ... */
}
2.函数的实参标签:
3.默认形参值:
4.不定个数的形参:
/// 这里定义了一个带有不定参数个数的函数foo
/// 这里不定个数的形参的类型为Int
func foo(a: Int, b: Int...) {
var sum = a
// 判定传递过来的实参个数是否大于0
if b.count > {
for i in b {
sum += i
}
}
print("sum = \(sum)")
}
// 不传任何不定个数形参所对应的实参
foo(a: )
// 传了1个不定个数形参所对应的实参
foo(a: , b: )
// 传了3个不定个数形参所对应的实参
foo(a: , b: , , )
5.输入输出形参:
“在调用函数时,我们在表示实参的表达式之前加上 & 单目前缀操作符,表示该实参将会在函数返回后被所对应的形参进行赋值。 单目前缀操作符 & 的操作数必须是一个变量,而不能是一个常量。”
摘录来自: “大话Swift 4.0”。 iBooks.
/// 这里定义了一个函数foo,
/// 其第二个形参b为输入输出形参
func foo(a: Int, b: inout Int) {
// 我们可以对输入输出形参b进行修改
// 但这里不能对形参a进行修改
b += a
}
var x =
// 当foo函数返回之后,
// 我们可以看到实参x的值也被修改了
foo(a: , b: &x)
// 这里输出:x = 110
print("x = \(x)")
6.函数重载:
“如果在同一作用域及名字空间中出现一组相同名字的函数,这些函数具有不同的形参类型或形参个数,或是带有不同的返回类型,那么称这组函数为重载函数(overloaded functions)。”
摘录来自: “大话Swift 4.0”。 iBooks.
7.函数类型与函数签名:
// 这里foo的类型为() -> Void
func foo() {
print("foo void")
}
// 这里foo的类型为(Int) -> Void
func foo(_ a: Int) {
print("foo Int")
}
/// 函数foo的签名为:foo
func foo() {
print("foo")
}
/// 函数boo的签名为:boo(_:)
func boo(_: Void) {
print("boo")
}
8.嵌套函数定义:
9.统一的函数引用体系:
Swift4.0复习函数的更多相关文章
- Swift4.0复习特性、编译标志和检查API的可用性
1.Swift中的特性: @引出,后面紧跟特性名,圆括号带参数即可. @attribute(args) avaiable: 指明对象,函数,类型的可用性. @available(iOS 10.0, m ...
- Swift4.0复习访问控制与作用域
1.访问等级: open: 可以继承,可以重写. public: “public 访问等级能用于修饰所有文件作用域的函数.对象.协议.枚举.结构体.类以及各种类型中的属性与方法.用 public 所修 ...
- Swift4.0复习错误处理
1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...
- Swift4.0复习类型定义、类型投射等操作
1.类型定义: /// 这里将MyInt定义为Int32类型 typealias MyInt = Int32 /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias M ...
- Swift4.0复习结构体
1.基本语法: /** 定义了一个结构体 */ struct Structure { /// 一个常量存储式实例属性, /// 并直接为它初始化 let constProperty = /// ...
- Swift4.0复习闭包
1.闭包的定义和调用: _ = { (param1: Int, param2: Float, param3: Void) -> return_type in // 闭包执行代码 /* ... * ...
- Swift4.0复习Optional
1.Optional基本使用: 当我们声明一个Optional对象时,无论该对象是在文件作用域还是在函数体内作为局部对象声明,如果不对它初始化,那么它的值默认为空(nil). // 声明a为Int类型 ...
- Swift4.0复习基本语法简介
1.五种类型: 包含五种类型——枚举(enum).结构体(struct).类(class).协议( protocol)以及函数类型(function types). 2.变量对象:var 3.常量对象 ...
- Swift4.0复习扩展
1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...
随机推荐
- 百度UEditor富文本插件的使用
这个富文本还是功能挺全的. 官方文档地址 下载地址 常用接口 较完整代码仓库 UEditor下载后直接运行即可访问,但在上传文件时需要单独再做配置. [很详细的SpringBoot整合UEditor教 ...
- Webstorm 2019最新激活码
Webstorm 2019激活码(有效期至2020年6月5日) K6IXATEF43-eyJsaWNlbnNlSWQiOiJLNklYQVRFRjQzIiwibGljZW5zZWVOYW1lIjo ...
- 《挑战30天C++入门极限》图文例解C++类的多重继承与虚拟继承
图文例解C++类的多重继承与虚拟继承 在过去的学习中,我们始终接触的单个类的继承,但是在现实生活中,一些新事物往往会拥有两个或者两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念 ...
- 说明os,sys模块有什么不同
官方解释: os: This module provides a portable way of usingoperating system dependent functionality. 翻译:提 ...
- Java GUI:将JPanel添加进JScrollPane
实现的目标: 因为在滚动框中含有很多个Java GUI 组件,因此这里采用JPanel面板包住这些组件,在用JScrollPane实现滚动 问题1:布局揉在一起 JPanel有自己默认的布局方式,因此 ...
- 从零开始带你成为JVM实战高手
专栏大纲 1.核心gc 内存回收以及提前设置内存大小.
- DB2通过某列分组来去重
DB2通过某列分组来去重,可防止distinct对大字段的去重报错. row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分 ...
- Mybatis异常-java.lang.IllegalArgumentException: invalid comparison:java.util.Date and java.lang.String
原因:在Mapper.xml中对非字符串类型的数据进行了是否为空判断,如date类型的数据Create_Date != '',decimal类型的数据price != ''都会报这个错误 只有字符串才 ...
- SQLEXPR_x64_CHS、SQLEXPRADV_x64_CHS、SQLEXPRWT_x64_CHS、SqlLocalDB、SQLManagementStudio_x64_CHS各版本说明
LocalDB (SqlLocalDB)LocalDB 是 Express的一种轻型版本,该版本具备所有可编程性功能,但在用户模式下运行,并且具有快速的零配置安装和必备组件要求较少的特点.如果您需要通 ...
- ubuntu之路——day11.5 迁移学习
在深度学习领域中,最强力的理念之一就是可以将神经网络学习的一种知识应用到另一个独立的任务中. 看上面的例子,首先我们有一个已经完成训练的神经网络,其目标是图像识别,我们有了绿色的1000000张图片并 ...