黑马程序员——Swift学习笔记:函数
来源:互联网 发布:南宁哪里有mac专柜 编辑:程序博客网 时间:2024/06/05 07:57
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
参考书:《疯狂Swift讲义》李刚 编著
Swift的函数与很多其它的编程语言不同,具有很多特别的性质和特殊的语法
定义函数
Swift的函数与很多其它的编程语言类似,在使用函数之前,一定要定义函数
格式如下
fun 函数名(形参列表)->返回值的类型{<span style="white-space:pre"></span>函数体的执行部分}说明:
fun:为标明该代码块为函数的关键字
函数名:合法的标识符即可,出于程序可读性的考虑,推荐使用驼峰式书写具有明确含义的意群
形参列表:通常的格式如下,黑体字的部分为不可省略的要素
inout var 外部形参名或# 内部形参名 : 形参类型=形参默认值 , ...
inout:当参数需要引用传递时,使用inout关键字,类似于C语言和Objective-C的指针运算符*,调用时在参数前加取地址符号&
★Swift在调用函数时总是只传递参数的副本,值类型(不使用inout关键字)传递的是值本身的副本,引用类型(使用inout关键字)传递的是引用的副本
var:Swift默认形参为常量,如果需要形参的值在函数中变化,则增加变量的声明var
外部形参名或#:类似Objective-C中如下形式的调用
Person *p=[[Person alloc] initWithVariable: variable andAnotherVariable: anotherVariable]这种函数名与参数混合书写的方式使每一个参数拥有注释
在Swift中,如果在调用函数时需要了解各个参数的含义,可以在函数的形参之前使用外部形参名,并使用空格隔开,如果需要与内部参数名本身作为注释,则在内部参数名前加井号,这样做可以提高代码的可读性
★如果函数在定义时使用了外部形参名,则调用时也必须使用相应的外部形参名
★Swift允许只为部分参数使用外部形参名
★外部形参名的使用与否,取决于代码可读性的需要
内部形参名:即为在函数内部使用的形参名,与大多数其他编程语言相同
形参类型:即对形参的类型的标注
形参默认值:Swift允许参数声明时给予参数初始化值,当调用函数没有给具有形参默认值的参数传值时,参数使用形参默认值
逗号:当参数为1个以上时,用逗号区分
省略号:由3个点组成,适用于数目未知的相同类型的形参的声明
★可变形参的本质是数组
★Swift的函数仅支持1个可变形参
★Swift推荐把可变形参置于形参列表的末尾
返回值的类型:指定函数的返回值的类型:
空类型:函数不返回任何值,有3种写法:
①省略->返回值类型
②->()
③->Void
基本类型:返回一个基本类型的值,写法为指定该类型的关键字
高级类型:返回多个相同或不同的值,可以指定返回数组、将需要返回的数据类型打包成元组等多种方式
函数类型:Swift把函数的形参值类型和返回值类型组合在一起视为函数的类型,可以作为函数的返回值类型
★返回函数类型的设计与C语言的返回函数的指针类似,但这种设计更加灵活
递归函数
Swift的函数与很多其它编程语言一样,同样支持函数递归
★递归函数包含隐式循环,因此为了避免死循环,递归只能向已知方向进行
函数类型
Swift规定的函数类型为形参值类型与返回值类型的组合,它与基本类型和高级类型一样可以用作函数的形参类型,返回值类型,给变量赋值
格式如下:
(形参列表)->返回值类型
重载
和Java类似,Swift允许同名函数存在
Swift的函数重载要求同名函数之间至少以下3者之一有区分:
①形参列表
②返回值类型
③外部形参名
★内部形参名只能在函数内部使用而不能在调用时被外界识别,因此Swift不支持仅有内部形参名不同的函数重载
★可变形参重载时,容易因参数个数不明而与同名函数调用出错,因此Swift不推荐可变形参重载
嵌套
Swift支持在函数内部定义函数
★这种函数对外隐藏,嵌套函数只能在其封闭函数内有效
★嵌套函数会拷贝所在的封闭函数中的常量和变量的副本,因此可以对其访问使用
★封闭函数可以返回自身持有的嵌套函数,以供其它作用域调用
0 0
- 黑马程序员——Swift学习笔记:函数
- 黑马程序员——Swift学习笔记:高级类型
- 黑马程序员——Swift学习笔记:流程控制
- 黑马程序员——Swift学习笔记:闭包
- 黑马程序员-函数-学习笔记
- 黑马程序员——Swift学习笔记:简介与交互环境
- 黑马程序员——Swift学习笔记:声明与基本类型
- 黑马程序员笔记——Java函数
- 【Swift】学习笔记(六)——函数
- Swift 学习笔记 —— 函数
- 黑马程序员——HTML学习笔记
- 黑马程序员——多线程学习笔记
- 黑马程序员——HTML学习笔记
- 黑马程序员——异常学习笔记
- 黑马程序员——HTML学习笔记
- 黑马程序员—学习笔记—接口
- 黑马程序员——【学习笔记】反射
- 黑马程序员——枚举学习笔记
- Python 反转字典 即key和val互换
- 参考上一篇的资料写的去重程序
- 关于参加OpenBLAS介绍会的一些心得
- Java 动态代理机制分析及扩展,第 1 部分
- 华为oj系列
- 黑马程序员——Swift学习笔记:函数
- kmp模式串2求匹配的趟数
- Git 多人协同开发
- perl多进程主进程等子进程结束
- 【POJ解题】:POJ3507 Judging Olympia
- java.lang.ClassCastException: com.sun.proxy.$Proxy4 cannot be cast to
- java写的爬虫
- 中国大陆主要银行卡号对应
- aws-cli简单介绍