目录:

  • 函数参数与返回值
  • 参数标签和参数名称
  • 可变参数
  • 传入传出参数
  • 函数类型
  • 嵌套函数

函数是一段完成特定任务的独立代码片段,使用func标示函数名,使用->标示返回类型。

  1. ・可以为函数参数设置默认值,以简化函数调用
  1. ・函数参数具有传入传出特性
  1. ・函数类型由函数的参数值类型和返回值类型唯一标定,与变量一样可以作为函数参数或返回值
  1. ・函数可以嵌套封装定义在其他函数体中,且可以作为返回值返回函数
  1. func greet(person: String) -> String {
  2. let greeting = "Hello, " + person + "!"
  3. return greeting
  4. }
函数参数与返回值
  1. // 无返回值函数
  2. func greet(person: String) {
  3. print("Hello, \(person)!")
  4. }
  5.  
  6. // 无参函数
  7. func sayHelloWorld() -> String {
  8. return "hello, world"
  9. }
  10.  
  11. // 多参有返回值函数
  12. func minMax(array: [Int]) -> (min: Int, max: Int) {
  13. // logic codes
  14. return (currentMin, currentMax)
  15. }
  16.  
  17. // 返回可选参数
  18. func minMax(array: [Int]) -> (min: Int, max: Int)? {
  19. // return nil 条件不满足时返回nil
  20. return (currentMin, currentMax)
  21. }
参数标签和参数名称

每个函数参数都有一个标签和名称。参数标签在函数调用时外部使用,写在实参前。参数名称在函数体内使用,默认情况下函数使用名称作为标签。

  1. // 具有函数参数标签和名称
  2. func someFunction(argumentLabel parameterName: Int) {
  3. // 在函数体内,parameterName 代表参数值
  4. }
  5.  
  6. // 没有函数参数标签,内外部都是用参数名称
  7. func someFunction(parameterName: Int) {
  8. // 在函数体内,parameterName 代表参数值
  9. }
  10.  
  11. // 省略函数参数标签,外部调用函数时可以在实参前省略参数标签
  12. func someFunction(_ parameterName: Int) {
  13. // 在函数体内,parameterName 代表参数值
  14. }
  15.  
  16. // 具有默认值的函数参数
  17. func someFunction(parameterWithoutDefault: Int, parameterWithDefault: Int = ) {
  18. // 函数调用时不传参数2,parameterWithDefault值以12传入。
  19. }
  20. someFunction(parameterWithoutDefault: , parameterWithDefault: )
  21. someFunction(parameterWithoutDefault: )
可变参数

可变参数可以接受0个或多个值,且一个函数有且仅有一个可变参数。

  1. func arithmeticMean(_ numbers: Double...) -> Double {
  2. var total: Double =
  3. for number in numbers {
  4. total += number
  5. }
  6. return total / Double(numbers.count)
  7. }
传入传出参数

可以使用inout标示一个函数参数为传入传出参数类型,可变参数(Int...)和常量不能作为输入输出参数。变量作为输入输出实参时需要前加 & 。

  1. var someInt =
  2. var anotherInt =
  3. swapTwoInts(&someInt, &anotherInt)
函数类型

Swift语言中函数类型可以像其他类型一样定义变量和常量。

  1. var mathFunction: (Int, Int) -> Int = addTwoInts

函数类型作为参数和返回值:

  1. func printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b: Int) {
  2. print("Result: \(mathFunction(a, b))")
  3. }
  4.  
  5. func chooseStepFunction(backward: Bool) -> (Int) -> Int {
  6. return backward ? stepBackward : stepForward
  7. }
嵌套函数
  1. func chooseStepFunction(backward: Bool) -> (Int) -> Int {
  2. func stepForward(input: Int) -> Int { return input + }
  3. func stepBackward(input: Int) -> Int { return input - }
  4. return backward ? stepBackward : stepForward
  5. }
声明:该系列内容均来自网络或电子书籍,只做学习总结!

Swift学习笔记(7):函数的更多相关文章

  1. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  2. Swift学习笔记(8)--函数

    1.定义及调用 func sayHelloAgain(personName: String) -> String { return "Hello again, " + per ...

  3. swift学习笔记之-函数

    //函数 import UIKit /*获得系统时间 var date = NSDate() var timeFormatter = NSDateFormatter() timeFormatter.d ...

  4. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  5. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  6. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  7. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  8. Swift学习笔记(14)--方法

    1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...

  9. matlab学习笔记13_1 函数返回值

    一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...

  10. swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

随机推荐

  1. CZLayer的阴影

    CALayer有一个shadow属性 意思是阴影 shadowcolor  //颜色 shadowoffset  //偏移 shadowOpacity  //透明度 layer有一个方法    mas ...

  2. WPF向系统发送消息 并传递结构体

    场景 :需要开发一个通讯组件 流程为:界面-开启接收服务-通过发送组件发送信息到 其他客户端和服务端 接受服务接收其他客户端发送的消息 需要传递给对应组件或者界面 因此会出现类库重复引用问题.因为采用 ...

  3. javascript中菜单栏切换案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. luogu P4245 【模板】任意模数NTT MTT

    Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...

  5. GitHub报错error: bad signature

    Git报错 bad signature 将文件提交到仓库时,抛出以下错误: 报错 Roc@DESKTOP-AF552U2 MINGW64 /e/note/Git (master) $ git add ...

  6. (2)pyspark建立RDD以及读取文件成dataframe

    别人的相关代码文件:https://github.com/bryanyang0528/hellobi/tree/master/pyspark 1.启动spark (1)SparkSession 是 S ...

  7. 使用ajax实现搜索功能

      最近要做一个搜索功能,网上搜了一圈,终于做出来了,很简单的一个,这里分享我的方法,希望对大家有用,不足之处还请指教. 这里使用ajax提交数据,配合jquery将数据显示出来. 用jq的keyup ...

  8. centos7最小化安装Oracle11gR2

    1.准备CentOS 7 系统环境 我以 CentOS-7-x86_64-DVD-1511.iso 为例,简述Oracle 11g的安装过程. 由于是使用静默模式(silent)安装的,无需使用图形化 ...

  9. 实现双向数据绑定mvvm

    实现双向数据绑定mvvm  

  10. IE6 浏览器常见兼容问题 共23个

    1.<!DOCTYPE HTML>文档类型的声明. 产生条件:IE6浏览器,当我们没有书写这个文档声明的时候,会触发IE6浏览器的怪异解析现象: 解决办法:书写文档声明. 2.不同浏览器当 ...