Почему функция agg spark (scala API) принимает аргументы expr и exprs? - PullRequest
1 голос
/ 28 мая 2020

Spark API RelationalGroupedDataset имеет функцию agg:

@scala.annotation.varargs
def agg(expr: Column, exprs: Column*): DataFrame = {
  toDF((expr +: exprs).map {
    case typed: TypedColumn[_, _] =>
      typed.withInputType(df.exprEnc, df.logicalPlan.output).expr
    case c => c.expr
  })
}

Почему он принимает два отдельных аргумента? Почему нельзя просто exprs: Column*? Есть ли у кого-нибудь неявная функция, которая принимает один аргумент?

1 Ответ

4 голосов
/ 28 мая 2020

Это необходимо для того, чтобы убедиться, что вы указали хотя бы один аргумент.

Чистые varargs не могут этого сделать, вы можете вызвать метод без каких-либо аргументов.

...