复制代码
join(string: "hello", toString: "world")
// returns "hello world"
有默认值的外部名称参数
在大多数情况下,为所有参数提供一个外部带有默认值的参数的名称是非常有用的(因此要求)。这将确如果当函数被调用时提供的值时参数必须具有明确的目的。
为了使这个过程更容易,当你自己没有提供外部名称时,Swift自动为所有参数定义了缺省的参数外部名称。自动外部名称与本地名称相同,就好像你在你的代码中的本地名称之前写了一个hash符号。
这里有一个早期join函数版本,它不为任何参数提供的外部名称,但仍然提供了joiner参数的默认值:
复制代码
func join(s1: String, s2: String, joiner: String = " ") -> String {
return s1 + joiner + s2
}
在这种情况下,Swift自动为一个具有默认值的参数提供了外部参数名称。调用函数时,为使得参数的目的明确、毫不含糊,因此必须提供外部名称:
复制代码
join("hello", "world", joiner: "-")
// returns "hello-world"
注意
你可以通过编写一个下划线(_)有选择进行这种行为,而不是一个明确的定义外部参数名称。然
而,在适当情况下有默认值的外部名称参数总是优先被使用。
可变参数
一个可变参数的参数接受零个或多个指定类型的值。当函数被调用时,您可以使用一个可变参数的参数来指定该参数可以传递不同数量的输入值。写可变参数的参数时,需要参数的类型名称后加上点字符(…)。
传递一个可变参数的参数的值时,函数体中是以提供适当类型的数组的形式存在。例如,一个可变参数的名称为numbers和类型为Double…在函数体内就作为名为numbers类型为Double[]的常量数组。
下面的示例计算任意长度的数字的算术平均值(也称为平均):








