2017-09-25 31 views
1

我遇到過這樣的問題:_ *中有許多spark-scala答案的符號,但找不到任何文檔。這實際上是什麼意思?這種用法的一個例子是在回答這個問題:_ * scala中的表示法

How to use DataFrame filter with isin in Spark Java?

行:

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

[如何將Scala數組傳遞到Scala可變參數方法?](https://stackoverflow.com/questions/31064753/how-to-pass-scala-array-into-scala-vararg-method)或[Scala中':_ *'(冒號下劃線明星)是什麼意思?](https://stackoverflow.com/questions/6051302/what-does-colon-underscore-star-do-in-scala) – Harald

+0

@pasternak :在提出新問題之前,請查看/檢查是否提出了同樣類型的問題,其中有答案。 –

回答

5

要理解它,讓我們舉一個例子

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,而不是將其全部作爲單個參數傳遞。