黑马程序员——Swift学习笔记:函数

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


参考书:《疯狂Swift讲义》李刚 编著


Swift的函数与很多其它的编程语言不同,具有很多特别的性质和特殊的语法

定义函数

Swift的函数与很多其它的编程语言类似,在使用函数之前,一定要定义函数
格式如下
fun 函数名(形参列表)->返回值的类型
{
	函数体的执行部分
}
说明:

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支持在函数内部定义函数
这种函数对外隐藏,嵌套函数只能在其封闭函数内有效
嵌套函数会拷贝所在的封闭函数中的常量和变量的副本,因此可以对其访问使用
★封闭函数可以返回自身持有的嵌套函数,以供其它作用域调用

你可能感兴趣的:(黑马程序员——Swift学习笔记:函数)