6.3 扩展参数
我们发现,Swift语言中的很多函数/方法在调用时不只是传入一个参数值,在前面还要跟一个有意义的英文名,该英文名和参数值之间用冒号(:)分隔。例如,Dictionary有一个updateValue方法,该方法的第二个参数需要给一个forKey,然后才能传入参数值,调用形式如下。
dict.updateValue("飞机", forKey:21)
实际上,这个forKey就是扩展参数名,该参数也可以成为命名参数。也就是说,在定义函数时指定的参数名是函数内部使用的,可以成为函数的内部参数名。而为了让代码更容易理解,在定义函数时还为其指定了一个参数名,该参数名就是扩展参数名。只在调用函数时指定。定义扩展参数名也很简单,只需要在内部参数名之前指定扩展参数名即可,两侧参数之间用空格分隔。
例如,下面两个函数,前者(process)是没有扩展参数名的函数,后者(process1)是有扩展参数名的函数。我们可以观察它们在调用时的差别。
// 没有扩展参数名的函数
func process(p1: String, p2:Int) -> String
{
return "name:" + p1 + " age:" + String(p2)
}
process("bill", 20)
// 有扩展参数名的函数,其中name和age是扩展参数名,需要在调用时指定
func process1(name p1: String, age p2:Int) -> String
{
return "name:" + p1 + " age:" + String(p2)
}
// 调用process1函数,在调用时必须指定扩展参数名
println(process1(name: "Mike", age:17))
执行这段代码后,会输出如下的内容。
name:Mike age:17
注意:在使用扩展参数名调用函数时,不能将参数顺序写错了,否则无法成功编译1
时间: 2024-08-20 08:41:41