函数参数名称(Function Parameter Names)
函数参数都有一个外部参数名(external parameter name)和一个局部参数名(local parameter name)。外部参数名用于在函数调用时标注传递给函数的参数,局部参数名在函数的实现内部使用。
func someFunction(firstParameterName:Int,secondParameterName: Int) {
// function body goes here
// firstParameterName and secondParameterName refer to
// the argument values for the first and second parameters
}
someFunction(1, secondParameterName: 2)
一般情况下,第一个参数省略其外部参数名,第二个以及随后的参数使用其局部参数名作为外部参数名。所有参数必须有独一无二的局部参数名。尽管多个参数可以有相同的外部参数名,但不同的外部参数名能让你的代码更有可读性。
指定外部参数名(Specifying External Parameter Names)
你可以在局部参数名前指定外部参数名,中间以空格分隔:
func someFunction(externalParameterName localParameterName: Int) {
// function body goes here, and can use localParameterName
// to refer to the argument value for that parameter
}
注意如果你提供了外部参数名,那么函数在被调用时,必须使用外部参数名。
外部参数名和局部参数名什么用?没搞明白
输入输出参数(In-Out Parameters)
变量参数,正如上面所述,仅仅能在函数体内被更改。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数(In-Out Parameters)。
函数类型(Function Types)
每个函数都有种特定的函数类型,由函数的参数类型和返回类型组成。
func addTwoInts(a: Int, _ b: Int) -> Int {
return a + b
}
func multiplyTwoInts(a: Int, _ b: Int) -> Int {
return a * b
}
这个例子中定义了两个简单的数学函数:addTwoInts
和 multiplyTwoInts。这两个函数都接受两个 Int值, 返回一个Int
值。这两个函数的类型是 (Int, Int) -> Int,可以解读为“这个函数类型有两个 Int型的参数并返回一个 Int型的值。”
使用函数类型(Using Function Types)
在 Swift 中,使用函数类型就像使用其他类型一样。例如,你可以定义一个类型为函数的常量或变量,并将适当的函数赋值给它:
var mathFunction: (Int, Int) -> Int = addTwoInts
“定义一个叫做 mathFunction的变量,类型是‘一个有两个 Int型的参数并返回一个 Int 型的值的函数’,并让这个新变量指向 addTwoInts
函数”。
现在,你可以用 mathFunction来调用被赋值的函数了:
print("Result: \(mathFunction(2, 3))")// prints "Result: 5"
函数类型作为参数类型(Function Types as Parameter Types)
函数类型作为返回类型(Function Types as Return Types)
你可以用函数类型作为另一个函数的返回类型。你需要做的是在返回箭头(->)后写一个完整的函数类型。
嵌套函数(Nested Functions)