一尘不染

可变参数v数组参数

swift

我正在努力查看将值传递给函数时使用哪种方法是否有明显的优势。下面的代码可能不是解释我要做出的决定的最佳示例,但我认为这是最容易理解的示例。

可变参数方法

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])

两种技术中的哪一种是首选?如果是这样,为什么(速度,可靠性或只是易于阅读)?谢谢。


阅读 311

收藏
2020-07-07

共1个答案

一尘不染

我认为没有速度差异。因为,在功能内部,您可以Variadic Parameter像一样使用Array

  1. 我认为如果参数数量较少(例如小于5个),Variadic Parameter则因为易于阅读,可能是一个更好的解决方案。

  2. 如果参数数量很大。数组是更好的解决方案。

也知道,Variadic Parameter有一些限制:

一个函数最多可以有一个可变参数,并且必须始终出现在参数列表的最后,以避免在调用带有多个参数的函数时产生歧义。

如果您的函数具有一个或多个具有默认值的参数,并且还具有可变参数,则将可变参数放在所有默认参数之后,并位于列表的末尾。

仅出于我的想法。希望有所帮助

2020-07-07