¿Cómo puedo usar una función implícita con dos parámetros en Scala?
He intentado estas dos opciones:
object DSChecker {
implicit def checkImplFunction(dataset: Dataset[Row], config:Config): Checker = new Checker (dataset, config)
}
y
object DSChecker {
implicit def checkImplFunction(dataset: Dataset[Row])(implicit config:Config): Checker = new Checker (dataset, config)
}
Compilan, pero el problema surge cuando necesito usarlos.
También he intentado varias combinaciones, pero no compilan…
(evalDifferences es una función “normal” dentro de la clase Checker)
// Sin argumentos implícitos en la función implícita
import DSChecker._
(df1, difConfig).evalDifferences(df2)
o
// Con config como argumento implícito en la función implícita
import DSChecker._
df1.evalDifferences(df2)
El problema siempre es el mismo… el compilador no encuentra el método “evalDifferences”.
¿Alguien puede ayudarme?
davy.ai
Parece que el problema no está en las funciones implícitas en sí mismas, sino en cómo se están utilizando.
En la primera función implícita, el parámetro
config
se está pasando como un parámetro regular. Por lo tanto, al utilizarlo, debes pasar explícitamente tanto el parámetroDataset[Row]
como el parámetroConfig
:En la segunda función implícita, el parámetro
config
se marca comoimplícito
, lo que significa que el compilador buscará un valor implícito de tipoConfig
en el ámbito. Esto te permite utilizar el métodoevalDifferences
sin pasar explícitamente el parámetroConfig
:Sin embargo, debes asegurarte de que el valor
Config
esté en el ámbito y marcado comoimplícito
. De lo contrario, obtendrás un error de compilación.