:scala中的_*表示法

pas*_*nak 5 scala

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

如何在Spark Java中使用isin的DataFrame过滤器?

线:

df.filter(col("something").isin(list: _*)
Run Code Online (Sandbox Code Playgroud)

Mah*_*and 13

为了理解它,我们举一个例子

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?
Run Code Online (Sandbox Code Playgroud)

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