:scala中的_ *表示法

时间:2017-09-25 05:14:56

标签: scala

我遇到了这个:_ *表示许多spark-scala答案,但无法找到任何文档。实际上是什么意思?这种用法的一个例子就是这个问题的答案

How to use DataFrame filter with isin in Spark Java?

行:

df.filter(col("something").isin(list: _*)

1 个答案:

答案 0 :(得分:10)

要理解它,我们举一个例子

scala> def echo(args: String*) =
for (arg <- args) println(arg)
echo: (args: String*)Unit

scala>  val arr = Array("What's", "up", "doc?")
arr: Array[String] = Array(What's, up, doc?)

scala> echo(arr)
<console>:14: error: type mismatch;
 found   : Array[String]
 required: String
       echo(arr)
scala> echo(arr: _ *)
What's
up
doc?

这种表示法,arr:_*告诉编译器将arr的每个元素作为自己的参数传递给echo,而不是将它作为单个参数传递。