Scala可変パラメータ関数の柔軟な呼び出し
881 ワード
Scalaプログラミングでは、関数のパラメータが可変であれば、SparkのDataFrame関数groupByを呼び出す場合など、String*の形式で書かれます.
groupBy関数のプロトタイプは次のとおりです.
まずgroupByのパラメータは可変であり、アプリケーションはAPI呼び出しレイヤのパラメータの具体的な個数を確認できないため、従来の方法で呼び出すことはできない.しかし、ScalaはFP時言語であり、このアプリケーション側のパラメータの個数が未知のアプリケーションシーンを解決するための便利な方法を提供しています.
まず、パラメータをSeqの要素に変換できます.たとえば、次のようにします.
以上の方法により,アプリケーションパラメータの個数が未知である場合,まずパラメータをSeqに組み立ててから可変パラメータ関数を呼び出すことができることが分かった.
groupBy関数のプロトタイプは次のとおりです.
def groupBy(cols: Column*)
では、日常的な呼び出しにおいて、従来の可変パラメータ関数呼び出し方式に従って、次のように書くことができる.dfRet.groupBy(dfRet("` _2`"),dfRet("` _2`"))
この方式は日常的な使用を満たすことができ、特にアプリケーションでcolの数がはっきりしている場合、アプリケーションがパラメータの個数を予知できない場合、どのように処理しますか?まずgroupByのパラメータは可変であり、アプリケーションはAPI呼び出しレイヤのパラメータの具体的な個数を確認できないため、従来の方法で呼び出すことはできない.しかし、ScalaはFP時言語であり、このアプリケーション側のパラメータの個数が未知のアプリケーションシーンを解決するための便利な方法を提供しています.
まず、パラメータをSeqの要素に変換できます.たとえば、次のようにします.
val arr = Seq(dfRet("` _2`"),dfRet("` _2`"))
で呼び出された場合にのみ、次のような方法があります.dfRet.groupBy(arr:_*)
は、arr内のすべての要素がgroupBy関数に順次渡されるように呼び出される.以上の方法により,アプリケーションパラメータの個数が未知である場合,まずパラメータをSeqに組み立ててから可変パラメータ関数を呼び出すことができることが分かった.