2016-03-18 6 views
0

Ich versuche jemand scala-Code (der gebaut wurde, und läuft gut) zu verstehen hat:scala DataFrame selectExpr akzeptiert einen Parameter oder zwei?

// df is of type DataFrame 
    df.selectExpr("*", clause) 

Während an dieser Verbindung für Datenrahmen suchen: https://spark.apache.org/docs/1.6.1/api/scala/#org.apache.spark.sql.DataFrame, die Syntax für die selectExpr hat diese Unterschrift unter denen die Annahme scheint nur ein Parameter:

def selectExpr(exprs: String*): DataFrame 

Warum also der Code, den ich oben erwähnt habe, in zwei Parametern anstelle von einem übergeben?

Und was ist "String *"? Es zeigt es vom Typ „scala.Predef.String“ ist, aber schwer, ein klares Beispiel Online-Gespräch über die Verwendung von „String * als eine Art zu finden.

Danke für die Hilfe.

Antwort

1

Ein Sternchen nach Typname ist nur eine Scala Art und Weise wiederholt Parameter zu definieren (siehe SLS §4.6.3), die zu varargs in Java sehr ähnlich sind.

So Erklärung Methode

def selectExpr(exprs: String*): DataFrame = { /*...*/ } 

entsprechen in etwa auf Java-Version

public DataFrame selectExpr(String... exprs) { /*...*/ } 

und erstellt eine Methode, die von null bis wahrscheinlich-wie-viele-wie-Sie-jemals-wollen-Argumente akzeptiert.

+0

vielen Dank – jlp

Verwandte Themen