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复习函数的更多相关文章

  1. Swift4.0复习特性、编译标志和检查API的可用性

    1.Swift中的特性: @引出,后面紧跟特性名,圆括号带参数即可. @attribute(args) avaiable: 指明对象,函数,类型的可用性. @available(iOS 10.0, m ...

  2. Swift4.0复习访问控制与作用域

    1.访问等级: open: 可以继承,可以重写. public: “public 访问等级能用于修饰所有文件作用域的函数.对象.协议.枚举.结构体.类以及各种类型中的属性与方法.用 public 所修 ...

  3. Swift4.0复习错误处理

    1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...

  4. Swift4.0复习类型定义、类型投射等操作

    1.类型定义: /// 这里将MyInt定义为Int32类型 typealias MyInt = Int32   /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias M ...

  5. Swift4.0复习结构体

    1.基本语法: /** 定义了一个结构体 */ struct Structure {   /// 一个常量存储式实例属性, /// 并直接为它初始化 let constProperty =   /// ...

  6. Swift4.0复习闭包

    1.闭包的定义和调用: _ = { (param1: Int, param2: Float, param3: Void) -> return_type in // 闭包执行代码 /* ... * ...

  7. Swift4.0复习Optional

    1.Optional基本使用: 当我们声明一个Optional对象时,无论该对象是在文件作用域还是在函数体内作为局部对象声明,如果不对它初始化,那么它的值默认为空(nil). // 声明a为Int类型 ...

  8. Swift4.0复习基本语法简介

    1.五种类型: 包含五种类型——枚举(enum).结构体(struct).类(class).协议( protocol)以及函数类型(function types). 2.变量对象:var 3.常量对象 ...

  9. Swift4.0复习扩展

    1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...

随机推荐

  1. idea 2018 配置lombok插件及使用lombok设置实体类的getter和setter

    内容简介 本文主要介绍Idea 2018中安装lombok插件,以及lombok的简单使用(生成实体类的getter和setter). lombok插件配置方法 Step 1: 打开Settings窗 ...

  2. 【贪心】Communication System POJ 1018

    题目链接:http://poj.org/problem?id=1018 题目大意:有n种通讯设备,每种有mi个制造商,bi.pi分别是带宽和价格.在每种设备中选一个制造商让最小带宽B与总价格P的比值B ...

  3. Newtonsoft.Json 自定义序列化器---时间

    IsoDateTimeConverter _IsoDateTimeConverter = new IsoDateTimeConverter() { DateTimeFormat = "yyy ...

  4. codevs 1729 单词查找树

    二次联通门 : codevs 1729 单词查找树 /* codevs 1729 单词查找树 Trie树 统计节点个数 建一棵Trie树 插入单词时每新开一个节点就计数器加1 */ #include ...

  5. 【一起来烧脑】底层HTTP深入笔记

    [外链图片转存失败(img-0GQ8QDNb-1563568792102)(https://upload-images.jianshu.io/upload_images/11158618-5bc7a2 ...

  6. MySQL之级联删除、级联更新、级联置空

    1. 准备测试表 # 专业表major ))engine=innodb default charset=utf8; # 学生表mstudent ), major int)engine=innodb d ...

  7. SpringMVC返回结果值处理器之返回一个值

    处理器一共分为两类: 一类是返回到一个页面,凡是返回页面的处理器,一定会刷新页面,对应的请求应该是同步请求. 一类是返回结果,凡是返回结果的处理器,一定是请求方需要得到这个结果值,此时就需要一个有回调 ...

  8. boosting与随机森林

      本文原创,转载请注明出处 http://www.cnblogs.com/gufeiyang 本文主要分两部分,boosting 与 随机森林. “三个臭皮匠顶一个诸葛亮”是说三个不聪明的人集合在一 ...

  9. 时间控件My97DatePicker事件监听及用法

    引入js <script src="My97DatePicker/WdatePicker.js"></script> 应用 <input type=& ...

  10. 深度学习面试题14:Dropout(随机失活)

    目录 卷积层的dropout 全连接层的dropout Dropout的反向传播 Dropout的反向传播举例 参考资料 在训练过程中,Dropout会让输出中的每个值以概率keep_prob变为原来 ...