我想实现一个函数(作为一个对象),类似于:
object Add extends ((Int, Int) => Int) {
def apply(a: Int, b: Int) = a + b
}
但是我想使用泛型,因为Spark Dataset
需要类似Dataset[Int]
的Type。 我如何用它编写一个函数?因为该函数无法编译(未知T):
object Something extends (Dataset[T] => Unit) {
def apply(input Dataset[T]) = {
...
}
}
编辑:
因为出现了一个问题,为什么我要这样做,最后我想写一些类似的东西:
object Process {
def doIt(config: Configuration) = {
val step1 = Step1(config)
val step2 = DoStep2(step1)
Output(step2)
}
}
这仅与源代码(应该)的外观有关。用数学的方式编写一个像f(x)
这样的函数。有了上述可能性,我可以写类似Step1(x)
的东西,它看起来几乎类似于f(x)
。
答案 0 :(得分:4)
对象不能是通用的。
但是您可以执行以下操作
object Something {
def apply[T](ds: Dataset[T]) = {
...
}
}
答案 1 :(得分:1)
尝试
class Something[T] extends (Dataset[T] => Unit) ...