[英]How can I use an implicit function with two parameters (Scala)?
我試過這兩個選項:
object DSChecker {
implicit def checkImplFunction(dataset: Dataset[Row], config:Config): Checker = new Checker (dataset, config)
}
和
object DSChecker {
implicit def checkImplFunction(dataset: Dataset[Row])(implicit config:Config): Checker = new Checker (dataset, config)
}
他們編譯,但問題是當我需要兩個使用它們時。
我也嘗試了多種組合,但它們無法編譯......(evalDifferences 是 clas Checker 中的“正常” function)
//Whithout implicit args in implicit function
import DSChecker._
(df1, difConfig).evalDifferences(df2)
或者
// With config as implicit arg in implicit funciton
import DSChecker._
df1.evalDifferences(df2)
問題總是一樣的......編譯器找不到“evalDifferences”方法。
有人能幫我嗎?
嘗試使用Tuple
:
object DSChecker {
implicit def checkImplFunction(data: (Dataset[Row], Config)): Checker = new Checker (data._1, data._2)
}
然后,這應該工作:
//Whithout implicit args in implicit function
import DSChecker._
(df1, difConfig).evalDifferences(df2)
在您的情況下,我認為擴展方法更適合:
object DSChecker {
implicit class DfExtension(df: Dataframe) {
def checker(implicit config: Config) = {
new Checker(df, config)
}
}
}
df1.checker.evalDifferences(df2)
您還可以將evalDifferences
直接公開為擴展方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.