1
는 I 정의 다음 함수가 : scalaTypesFor 및 scalaTypeOpt 모두 와일드 파라미터와 TypeTag을 수득 할 것으로 예상된다,이 경우왜 scala가 2 함수에서 와일드 카드 유형을 유추 할 수 없습니까?
import org.apache.spark.sql.catalyst.{ScalaReflection}
import ScalaReflection.universe
import universe.TypeTag
def scalaTypesFor(dataType: DataType): Set[TypeTag[_]] = ...
def scalaTypeOpt: Option[TypeTag[_]] = ...
val catalystType = ...
scalaTypeOpt.map(v => Set(v))
.getOrElse{
val default = scalaTypesFor(catalystType)
default
}
를들은 동일한 유형이어야한다. 그러나 컴파일러에서 다음 오류가 발생했습니다 :
Error:(29, 51) inferred type arguments [scala.collection.immutable.Set[_117] forSome { type _$2; type _117 >: org.apache.spark.sql.catalyst.ScalaReflection.universe.TypeTag[_$2] <: org.apache.spark.sql.catalyst.ScalaReflection.universe.TypeTag[_] }] do not conform to method getOrElse's type parameter bounds [B >: scala.collection.immutable.Set[org.apache.spark.sql.catalyst.ScalaReflection.universe.TypeTag[_$2]] forSome { type _$2 }]
val effective = scalaTypeOpt.map(v => Set(v)).getOrElse{
^
형식 유추에 문제가 있습니까?
그 것이 당신의 문제를 해결합니까? – Creos