答案 0 :(得分:10)
来自Apple的Swift语言指南:
有时在调用函数时命名每个参数很有用, 表示传递给函数的每个参数的用途。
如果希望函数的用户在何时提供参数名称 他们调用您的函数,为每个函数定义一个外部参数名称 参数,以及本地参数名称。
所以,你不需要"需要"一个外部参数名称,但最好使用它们,因为它们在调用方法时用作有关参数的文档。
例如,不使用外部参数名称,您可以定义如下的连接方法:
func join(_ s1: String,_ s2: String,_ joiner: String) -> String {
return s1 + joiner + s2
}
然后会像这样调用:
join("foo", "bar", ", ")
如您所见,每个参数的含义都不是很清楚。 使用外部参数名称,您可以定义相同的方法,如下所示:
func join(string s1: String, toString s2: String, withJoiner joiner: String) -> String {
return s1 + joiner + s2
}
然后会强制用户像这样调用它:
join(string: "foo", toString: "bar", withJoiner: ", ")
你可以看到它使参数的含义以及方法的作用更加清晰。
在这个简单的例子中看起来似乎并不那么重要,但是当定义采用不那么明显含义的大量参数的方法时,使用外部参数名称将使您的代码更容易理解。
Swift 3的更新:
随着Swift 3的引入,这变得更有意义。考虑Swift 3中Array类的append(contentsOf:)
方法:
在这种情况下,没有不同的内部和外部参数名称会强制我们将标签contentsOf
更改为呼叫网站中的string
,这不会像前者。 Swift 3 API指南依赖于具有不同的内部和外部参数名称来创建简洁明了的方法。