如果你想为一个函数参数提供一个外部参数名,然而本地参数名已经使用了一个合适的名称了,你不需要为该参数写相同的两次名称。取而代之的是,写一次名字,并用一个hash符号(#)作为名称的前缀。这告诉Swift使用该名称同时作为本地参数名称和外部参数名称。
这个例子定义了一个名为containsCharacter的函数,定义了两个参数的外部参数名称并通过放置一个散列标志在他们本地参数名称之前:
复制代码
func containsCharacter(#string: String, #characterToFind: Character) -> Bool {
for character in string {
if character == characterToFind {
return true
}
}
return false
}
这个函数选择的参数名称清晰的、函数体极具可读性,使的该函数被调用时没有歧义:
复制代码
let containsAVee = containsCharacter(string: "aardvark", characterToFind: "v")
// containsAVee equals true, because "aardvark" contains a "v"
参数的默认值
可以为任何参数设定默认值来作为函数的定义的一部分。如果默认值已经定义,调用函数时就可以省略该参数的传值。
注意
将使用默认值的参数放在函数的参数列表的末尾。这确保了所有调用函数的非默认参数使用相同的顺
序,并明确地表示在每种情况下相同的函数调用。
这里有一个版本,是早期的join函数,并为参数joiner设置了默认值:
复制代码
func join(string s1: String, toString s2: String,
withJoiner joiner: String = " ") -> String {
return s1 + joiner + s2
}
如果在join函数被调用时提供给joiner一个字符串值,该字符串是用来连接两个字符串,就跟以前一样:
复制代码
join(string: "hello", toString: "world", withJoiner: "-")
// returns "hello-world"
但是,如果当函数被调用时提供了joiner的没有值,就会使用单个空格(” “)的默认值:








