可变参数v数组参数

时间:2015-06-01 11:49:42

标签: ios swift parameters

我很难看到将值传递给函数时使用哪种方法有明显的优势。我的下面的代码可能不是解释我试图做出的决定的最好例子,但在我看来,这是最容易理解的。

变量参数方法

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

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

1 个答案:

答案 0 :(得分:5)

我认为没有速度差异。因为在函数内部,您使用Variadic Parameter就像Array一样。

  1. 我认为如果参数count很小,例如小于5,Variadic Parameter可能是更好的解决方案,因为它易于阅读。

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

  3. 另外要知道,Variadic Parameter有一些限制:

      

    一个函数最多只能有一个可变参数,并且它必须始终显示在参数列表的最后,以避免在调用具有多个参数的函数时出现歧义。

         

    如果您的函数有一个或多个带有默认值的参数,并且还有一个可变参数,请将variadic参数放在列表最后的所有默认参数之后。

    仅仅是我的想法。希望有用