可变参数和输入输出参数

经过一个半月的编码训练营,并在Apple文档中进行了许多搜索并发现堆栈溢出……我对Ygritte的口号有了全新的了解:

每当我觉得我开始理解一个概念的基础时,我进行这些搜索只是发现我只了解冰山一角,而且有很多我从未听说过或使用过的东西……带我进入我的主题:可变参数和输入输出参数。

当我们一直在讨论诸如函数类型和嵌套函数之类的主题时,我决定回过头来重新阅读Apple关于函数的文档。 快速搜索“函数”将显示我们已经学习的许多关键点:定义和调用函数,参数和返回值,参数标签等。我们还从Ben Su的博客“参数,非常功能”中了解了很多有关默认参数的知识 。 ”,我也希望从Jhantelle Belleza的博客“ Intro to Closures {}”中了解有关Closure的信息。

但是,正如我在文档中继续读到的那样,还有可变参数和输入输出参数。 这些到底是什么?

让我们看看苹果如何定义它:

可变参数

可变参数接受零个或多个指定类型的值。 您可以使用可变参数来指定调用该函数时可以传递不同数量的输入值的参数。”

数量不定的输入值听起来很像……。 收藏? 那么,这是怎么回事? 我继续读…。

“传递给可变参数的值在函数体内可以作为适当类型的数组使用。”

嗯…好 然后让我们测试一下:

它打印:

好的,这很好,因为我们现在可以调用此函数并传递不带方括号[]的数组参数:

如果您说,我已经有了想要使用的数组怎么办? 理想情况下,在调用具有可变参数的函数时,您不想将数组作为参数传递。 但是,您可能会同时使用两者来创建更多选项。

假设我们要查找数字数组的平均值:

现在,我们可以将此函数用作带有可变参数的函数的参考点:

最后,我们将获得两个输入选项:

一种方法比另一种更好吗? 不一定…由于可变参数和数组参数都具有通过数组的相同目的,因此可能只是一个优先事项。 某些人可能会通过在调用函数时直接插入数组的输入值来发现可变参数更易读和直接。

以下是有关可变参数的一些要记住的要点:

  • 在任何参数类型的末尾附加一个省略号(3个点)
  • 可以与其他类型的参数结合使用,但每个功能仅允许一个
  • 因为它是一个数组,所以值必须是同一类型

最后,如果您有片刻的déjàvu感觉像您之前已经看过这三个点,请在此处查看:

那还不错,不是吗? 继续学习输入输出参数!