// 完整的函数定义
func funcName(实参标签 形参名: 类型) {
// In the function body, 形参名 refers to (引用) 该参数的参数值
}
- 实参标签用在调用函数的时候(除非用
_
省略实参标签, 否则函数调用时, 实参的前面必须写实参标签), 定义函数时可以省略, 省略则意味者:实参标签 == 形参名
; - 形参名用在函数的实现当中(即大括号中);
一个函数的定义中, 可能多个形式参数拥有相同的实际参数标签, 但形参名必须唯一.
示例
这里有另一个函数 greet(person:)的版本,接收一个人名字和家乡然后返回对这个的问候:
func greet(person: String, from hometown: String) -> String {
return "Hello \(person)! Glad you could visit from \(hometown)."
}
print(greet(person: "Bill", from: "Cupertino"))
// Prints "Hello Bill! Glad you could visit from Cupertino."
实际参数标签的使用能够让函数的调用更加明确,更像是自然语句,同时还能提供更可读的函数体并更清晰地表达你的意图。
省略实参标签
如果对于函数的形式参数不想使用实际参数标签的话,可以利用下划线( _ )来为这个形式参数代替显式的实际参数标签。
func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
// In the function body, firstParameterName and secondParameterName
// refer to the argument values for the first and second parameters.
}
someFunction(1, secondParameterName: 2)
默认形式参数
你可以通过在形式参数类型后给形式参数赋一个值来给函数的任意形式参数定义一个默认值。如果定义了默认值,你就可以在调用函数时候省略这个形式参数。
func someFunction(parameterWithDefault: Int = 12) {
// In the function body, if no arguments are passed to the function
// call, the value of parameterWithDefault is 12.
}
someFunction(parameterWithDefault: 6) // parameterWithDefault is 6
someFunction() // parameterWithDefault is 12
把不带有默认值的形式参数放到函数的形式参数列表中带有默认值的形式参数前边,不带有默认值的形式参数通常对函数有着重要的意义——把它们写在前边可以便于让人们看出来无论是否省略带默认值的形式参数,调用的都是同一个函数。