在数组之后使用“_ *”是什么意思?

时间:2016-03-10 12:46:46

标签: scala

我一直在处理一些scala代码,并且我在以下数组之后使用_*args: _*)。

有人可以告诉我它的意思吗?

2 个答案:

答案 0 :(得分:3)

您可以定义一个带有可变数量参数的函数,例如:

def print(args: String*) {
  elements.foreach(println)
}

您可以使用多个参数调用它:

print("a")
print("a","b")

或者如果你有一个序列,你可以使用列表调用它,但在这种情况下你需要使用_ *语法来绘制序列而不是将它作为单个参数传递

val l = List("a","b")
print(l: _*)

答案 1 :(得分:1)

根据scala文档,这意味着扩展vararg。 other symbols

在Java 1.5中添加了Java中的Vararg,以便在方法的参数数量未知时可以使用它。

关于vararg的一些重要观点: - 每次调用方法时都会创建匿名数组,这会增加时间复杂度。因此,如果方法调用在大多数情况下导致1或2参数,则更喜欢重载而不是使用vararg。