当前位置: 首页 > 面试题库 >

可变参数v数组参数

东方修谨
2023-03-14
问题内容

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

可变参数方法

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

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

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

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

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

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

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



 类似资料:
  • 5.7. 可变参数 参数数量可变的函数称为为可变参数函数。典型的例子就是fmt.Printf和类似函数。Printf首先接收一个的必备参数,之后接收任意个数的后续参数。 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号“...”,这表示该函数会接收任意数量的该类型参数。 gopl.io/ch5/sum func sum(vals...int) int { total

  • 在第二章中,我们已经讲叙了基本的函数定义与调用方法,以及一些函数属性的作用。但 正如大多数编程语言一样,函数是如此普遍且重要的元素。因而本章继续讨论一些有关函 数的较为高级的用法。 5.1 可变参数 可变参数的意义 一般情况下,在定义函数时指定形参,在调用函数时传入实参,且参数个数必须要与定义 时指定的参数数量相等。但在一些情况下,我们将要实现的函数功能,它的参数个数可能 是不确定,或者有些参数是

  • 6. 可变参数 到目前为止我们只见过一个带有可变参数的函数printf: int printf(const char *format, ...); 以后还会见到更多这样的函数。现在我们实现一个简单的myprintf函数: 例 24.9. 用可变参数实现简单的printf函数 #include <stdio.h> #include <stdarg.h> void myprintf(const ch

  • 本文向大家介绍python函数参数(必须参数、可变参数、关键字参数),包括了python函数参数(必须参数、可变参数、关键字参数)的使用技巧和注意事项,需要的朋友参考一下 ps:下面给大家介绍下python中函数、方法、关键字的区别 一、关键字 二、函 数   函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。可以自己定义一个函数。   --函数-封装了独立功能,可以直接调用   

  • 问题内容: 有没有办法允许JavaScript中的函数使用“无限”的var? 例: 问题答案: 当然,只需使用对象即可。

  • Scala 函数 Scala 允许你指明函数的最后一个参数可以是重复的,即我们不需要指定函数参数的个数,可以向函数传入可变长度参数列表。 Scala 通过在参数的类型之后放一个星号来设置可变参数(可重复的参数)。例如: object Test { def main(args: Array[String]) { printStrings("Runoob", "Scala",