可以不重载仅将函数(不同类型)作为参数的方法吗?
Can one not overload methods that just take a function (of different types) as parameter?
我有一个方法:
def udf(func: RDD[Row] => RDD[Row]) = ...
和另一种方法:
def udf(func: List[String] => List[String]) = ...
在 Scala 中。它给了我这个:
Error:(...) double definition:
method udf:(func: List[String] => List[String])UDFOperator and
method udf:(func: org.apache.spark.rdd.RDD[Row] => org.apache.spark.rdd.RDD[Row])UDFOperator at ...
have same type after erasure: (func: Function1)UDFOperator
def udf(func: List[String] => List[String]) = {
^
JVM 不支持泛型,因此 Scala 可能需要解析运行时泛型类型检查的任何事情都无法完成。
在您的情况下,两种方法都需要 Function1[_,_]
个参数,并且 JVM 无法分辨它们之间的区别。您必须重命名其中之一。
我有一个方法:
def udf(func: RDD[Row] => RDD[Row]) = ...
和另一种方法:
def udf(func: List[String] => List[String]) = ...
在 Scala 中。它给了我这个:
Error:(...) double definition:
method udf:(func: List[String] => List[String])UDFOperator and
method udf:(func: org.apache.spark.rdd.RDD[Row] => org.apache.spark.rdd.RDD[Row])UDFOperator at ...
have same type after erasure: (func: Function1)UDFOperator
def udf(func: List[String] => List[String]) = {
^
JVM 不支持泛型,因此 Scala 可能需要解析运行时泛型类型检查的任何事情都无法完成。
在您的情况下,两种方法都需要 Function1[_,_]
个参数,并且 JVM 无法分辨它们之间的区别。您必须重命名其中之一。