swift之函数

1>函数参数与返回值

无参无返回值函数

尽管这个函数没有参数,但是定义中在函数名后还是需要一对圆括号。当被调用时,也需要在函数名后写一对圆括号。

有参无返回值函数

因为这个函数不需要返回值,所以这个函数的定义中没有返回箭头(->)和返回类型。

无参有返回值函数


有参有返回值函数

2>可选元组返回类型

如果函数返回的元组类型有可能整个元组都“没有值”,你可以使用可选的(Optional)元组返回类型反映整个元组可以是nil的事实。你可以通过在元组类型的右括号后放置一个问号来定义一个可选元组,eg:(Int, String)  这里需要注意的是 可选元组类型如(Int, Int)?与元组包含可选类型如(Int?, Int?)是不同的.可选的元组类型,整个元组是可选的,而不只是元组中的每个元素值。

3>函数参数名称

函数参数都有一个外部参数名和一个局部参数名.外部参数名用于在函数调用时标注传递给函数的参数,局部参数名在函数的实现内部使用。

swift之函数_第1张图片
一般情况下,第一个参数省略其外部参数名,第二个以及随后的参数使用其局部参数名作为外部参数名。所有参数必须有独一无二的局部参数名.如果你提供了外部参数名,那么函数在被调用时,必须使用外部参数名。如果你不想为第二个及后续的参数设置外部参数名,用一个下划线(_)代替一个明确的参数名。

4>可变参数

一个可变参数(variadic parameter)可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数可以被传入不确定数量的输入值。通过在变量类型名后面加入(...)的方式来定义可变参数。(一个函数最多只能有一个可变参数)

5>输入输出参数

变量参数,仅仅能在函数体内被更改。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数.

定义一个输入输出参数时,在参数定义前加inout关键字。一个输入输出参数有传入函数的值,这个值被函数修改,然后被传出函数,替换原来的值。(输入输出参数不能有默认值,而且可变参数不能用inout标记。如果你用inout标记一个参数,这个参数不能被var或者let标记)


swift之函数_第2张图片
a的值最终会被修改成17

6>使用函数类型

在 Swift 中,使用函数类型就像使用其他类型一样。eg:你可以定义一个类型为函数的常量或变量,并将适当的函数赋值给它:

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

这个可以解读为:

“定义一个叫做mathFunction的变量,类型是‘一个有两个Int型的参数并返回一个Int型的值的函数’,并让这个新变量指向addTwoInts函数”。

7>嵌套函数

把函数定义在别的函数体中,称作嵌套函数.默认情况下,嵌套函数是对外界不可见的,但是可以被它们的外围函数(enclosing function)调用。一个外围函数也可以返回它的某一个嵌套函数,使得这个函数可以在其他域中被使用。

你可能感兴趣的:(swift之函数)