本节书摘来自异步社区《Swift 权威指南》一书中的第6章,第6.1节函数的定义和调用,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

第6章 丰富多彩的功能——函数
Swift 权威指南
Swift语言为函数提供了丰富多彩的功能。但从功能上来说,Swift函数和其他语言的函数相比是非常强大的,在后面章节要介绍的方法与函数基本上一致。不过在本章先不讨论方法的细节,只介绍函数的各种功能和使用方法。

本章要点

函数的定义和调用
返回多种的函数
扩展参数
扩展参数和内部参数使用同一个名字
默认参数值
可变参数
常量和变量参数
输入/输出参数
函数类型
嵌套函数

6.1 函数的定义和调用
源代码文件:src/ch06/function/function/main.swift

Swift并不是纯的面向对象语言,所以和C++一样,支持函数。函数和方法的区别就是函数是全局的,而方法的作用域仅限于方法内。要想引用方法,必须先要引用包含该方法的对象。也可以将方法看成是定义在类中的函数。因此,函数和方法的定义规则基础一致。在后面讲到类时再详细讨论方法的细节。本节先来讨论如何定义一个函数。

不管是什么语言,函数都必须由下面几部分组成。

函数名。
返回值类型。
函数的参数列表,在列表中包含参数名(形参)和参数类型。
函数体。
定义Swift语言的函数也逃不出这几项。下面看一下Swift函数的语法形式。

func functionName(paramName1:paramType1, paramName2,paramType2,...) -> returnType
{function body
}

很明显,Swift函数和C语言的函数在定义上差异很大。首先,Swift函数必须以func开头,然后跟着函数名,接下来是函数参数列表,最后是返回值类型。其中函数参数列表和返回值类型之间需要用“→”分隔。最后需要用一对花括号({...})将函数体括起来,这里面函数参数类型列表和返回值类型都是可选的。如果不指定函数参数列表,则函数没有参数,但必须在函数名后面指定一对圆括号。如果不指定返回值类型,则函数没有返回值,相当于C语言函数前面指定了void。

下面是一个标准的Swift函数的代码,该函数接收一个String类型的参数,返回一个String类型的值,最后调用了sayHello函数,并输出了函数的返回值。

func sayHello(personName: String) -> String
{let greeting = "hello " + personName + "!"return greeting
}
//  调用sayHello函数
println(sayHello("李宁"))

执行这段代码后,会输出如下内容。

hello 李宁!

下面是一些其他形式的函数(多个参数、没有参数、没有返回值)。

//  多个参数的函数
func add(a:Int, b:Int) -> Int
{return a + b
}
//  调用add函数
println(add(20, 30))
//  没有参数,但又返回值的函数
func process() -> Float
{return 3*20
}
//  调用process函数
println(process())
//  既没有参数,也没有返回值的函数
func method()
{println("hello world")
}
//  调用method方法
method()

执行这段代码后,会输出如下内容。

50
60.0
hello world

《Swift 权威指南》——第6章,第6.1节函数的定义和调用相关推荐

  1. HTML5 权威指南第 10 章 文档分节 学习笔记

    HTML5 权威指南第 10 章 文档分节 学习笔记 第 8 章 标记文字 内容从从文字出发,专注如何将单体内容正确的呈现出来:第 9 章 组织内容 内容从段落出发,专注如何将单体内容合理的放在段落中 ...

  2. 《Swift 权威指南》——导读

    本节书摘来自异步社区<Swift 权威指南>一书中的目录,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 内容提要 前言 第1章 未来的iOS开 ...

  3. 《Swift 权威指南》——第6章,第6.7节常量和变量参数

    本节书摘来自异步社区<Swift 权威指南>一书中的第6章,第6.7节常量和变量参数,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 6.7 常量和变量 ...

  4. JavaScript权威指南 第15章 网络编程 第三部分

    JavaScript权威指南 第15章 网络编程 第三部分 可伸缩矢量图形 15.7.1 在HTML中使用SVG 15.7.2 编程操作SVG 15.7.3 通过JavaScript创建SVG图片 1 ...

  5. 《Hadoop权威指南》第二章 关于MapReduce

    <Hadoop权威指南>第二章 关于MapReduce 目录 使用Hadoop来数据分析 横向扩展 注:<Hadoop权威指南>重点学习摘要笔记 1. 使用Hadoop来数据分 ...

  6. JavaScript权威指南 第11章JavaScript标准库

    JavaScript权威指南 第11章JavaScript标准库 第11章 JavaScript标准库 11.1 集合与映射 11.1.1 Set类 11.1.2 Map类 11.1.3 WeakMa ...

  7. 《果壳中的C# C# 5.0 权威指南》 (09-26章) - 学习笔记

    <果壳中的C# C# 5.0 权威指南> ========== ========== ========== [作者] (美) Joseph Albahari (美) Ben Albahar ...

  8. Kubernetes单机创建MySQL+Tomcat演示程序:《Kubernetes权威指南》第一章demo报错踩坑

    欢迎访问我的个人博客:https://midoq.github.io/ 引言 最近做边缘计算项目,因为没有基础,所以首先学习Kubernetes.感觉系统的中文入门资料比较少,只找到<Kuber ...

  9. 《HTTP权威指南》第一章学习总结

    吃透HTTP权威指南 第一章 定个小目标,吃透这本书,每天最少一章 CSDN 见 HTTP 因特网的多媒体信使 这一小节没啥好说的···一些基本的介绍 Web客户端和服务器 Web服务器一般被称为HT ...

最新文章

  1. docker 查看容器磁盘大小_软件安全 : Docker逃逸详解
  2. python语言程序设计西安电子科技大学答案-徐悦甡 | 个人信息 | 西安电子科技大学个人主页...
  3. c语言各类随机函数,怎样让c语言中的随机函数真正随机?
  4. MySql 中文乱码排查解决方案
  5. kubernetes(六)k8s核心组件学习
  6. 微信开发者工具不显示二维码问题
  7. Linux下多线程编译
  8. jxl操作excel样式设置
  9. 机器学习分支:active learning、incremental learning、online machine learning
  10. 2019年408考研算法题
  11. ensembl-vep/VEP 注释软件安装及测试 超简单版(conda vep、百度网盘数据库)
  12. [转]KSN报告:2014 - 2016年的PC勒索软件
  13. ProcessOn 在线作图,真香指南
  14. python文件打开后闪退_python文件打开闪退要怎么处理?
  15. TortoiseSVN配置
  16. 血管老化30岁就开始!别怕,吃它就能搞定,让血管保持年轻~
  17. 2021年电工(中级)考试资料及电工(中级)考试试题
  18. 20系列和30系列显卡下的tensorflow-gpu环境配置,避坑指南
  19. 学习python必备软件
  20. android手机赚钱软件排行

热门文章

  1. SQL Server中Rowcount与@@Rowcount的用法 和set nocount on 也会更新@@Rowcount
  2. iOS xcode4 编译环境
  3. python---之suplot里面的twinx()函数
  4. ubuntu学习日记--Lesson6:shell,bash,dash
  5. Ubuntu16.04安装卸载MongoDB
  6. Python配置opencv并在命令行运行
  7. 【华为2015暑期实习生上机题】仿照Excel的列编号
  8. php能连接动易吗,动易CMS数据转成dedecms的php程序
  9. shell脚本循环执行一个linux命令,Linux中循环执行shell命令的方法
  10. 一行一个链接代码_小白写代码讨女朋友欢心,包教包会