Swift 中的外部参数

External Parameters in Swift

我是 Swift 的新手,我的问题是我们在哪里使用和需要外部参数?

来自 Apple 的 Swift 语言指南:

Sometimes it’s useful to name each parameter when you call a function, to indicate the purpose of each argument you pass to the function.

If you want users of your function to provide parameter names when they call your function, define an external parameter name for each parameter, in addition to the local parameter name.

因此,您没有 "need" 外部参数名称,但使用它们是一个很好的做法,因为它们在调用方法时用作有关参数的文档。

例如,在不使用外部参数名称的情况下,您可以这样定义连接方法:

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: ", ")

您可以看到,它使参数的含义以及方法的作用更加清晰。

在这个简单的例子中它可能看起来不那么重要,但是当定义带有大量参数且含义不太明显的方法时,使用外部参数名称将使您的代码更容易理解。

Swift3 的更新:

随着 Swift 3 的引入,这变得更加有意义。考虑 Swift 3 中数组 class 的 append(contentsOf:) 方法:

在这种情况下,没有不同的内部和外部参数名称会迫使我们在调用站点中将标签 contentsOf 更改为类似 string 的内容,这样读起来不如前一个。 Swift 3 API 准则依靠不同的内部和外部参数名称来创建清晰简洁的方法。