Swift中的外部参数

时间:2015-01-27 00:38:44

标签: function swift

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

1 个答案:

答案 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指南依赖于具有不同的内部和外部参数名称来创建简洁明了的方法。