复制代码
func someFunction(externalParameterName localParameterName: Int) {
// function body goes here, and can use localParameterName
// to refer to the argument value for that parameter
}
注意
如果您为参数提供一个外部参数名称,调用该函数时外部名称必须始终被使用。
作为一个例子,考虑下面的函数,它通过插入他们之间的第三个”joiner”字符串来连接两个字符串:
复制代码
func join(s1: String, s2: String, joiner: String) -> String {
return s1 + joiner + s2
}
当你调用这个函数,你传递给函数的三个字符串的目的就不是很清楚了:
复制代码
join("hello", "world", ", ")
// returns "hello, world"
为了使这些字符串值的目的更为清晰,为每个join函数参数定义外部参数名称:
复制代码
func join(string s1: String, toString s2: String, withJoiner joiner: String)
-> String {
return s1 + joiner + s2
}
在这个版本的join函数中,第一个参数有一个外部名称string和一个本地名称s1;第二个参数有一个外部名称toString和一个本地名称s2;第三个参数有一个外部名称withJoiner和一个本地名称joiner。
现在,您可以使用这些外部参数名称调用清楚明确的调用该函数:
复制代码
join(string: "hello", toString: "world", withJoiner: ", ")
// returns "hello, world"
使用外部参数名称使join函数的第二个版本功能更富有表现力,用户习惯使用sentence-like的方式,同时还提供了一个可读的、意图明确的函数体。
注意
考虑到使用外部参数名称的初衷就是为了在别人第一次阅读你的代码时并不知道你函数参数的目的是什么。
但当函数调用时如果每个参数的目的是明确的和毫不含糊的,你并不需要指定外部参数名称。
外部参数名称速记








