问题描述
我正在努力查看在将值传递给函数时使用哪种方法是否有明显的优势.下面的代码可能不是解释我正在尝试做出的决定的最佳示例,但我认为它是最容易理解的.
可变参数法
func arithmeticMean(numbers: Double...) -> Double { var total: Double = 0 for value in numbers { total += value } return total / Double(numbers.count) } arithmeticMean(5, 10, 15)
数组参数方法
func arithmeticMean(numbers: [Double]) -> Double { var total: Double = 0 for value in numbers { total += value } return total / Double(numbers.count) } arithmeticMean([5, 10, 15])
这两种技术中的任何一种都是首选吗?如果是这样,为什么(速度、可靠性或只是易于阅读)?谢谢.
推荐答案
我认为没有速度差异.因为在函数内部,你使用 Variadic Parameter 就像 Array 一样.
我认为如果参数个数很小,比如小于5,Variadic Parameter可能是一个更好的解决方案,因为它很容易阅读.
如果参数的数量很大.数组是更好的解决方案.
也知道,Variadic Parameter有一些限制:
<块引用>一个函数最多可以有一个可变参数,并且它必须始终出现在参数列表的最后,以避免在调用带有多个参数的函数时产生歧义.
如果您的函数有一个或多个带默认值的参数,并且还有一个可变参数,请将可变参数放在列表最后的所有默认参数之后.
只是我的想法.希望有帮助