import shapeless._; import labelled._;
object CreateField {
type OptionalField[K <: Symbol, T] = FieldType[K, Option[T]]
def pure[K <: Symbol, T](key: Witness.Aux[K], v: Option[T]): OptionalField[K, T] = {
field[K](v)
}
}
抱怨是
发现:v.type(底层类型为Option [T])[错误]需要: 具有选项[T]
的shapeless.labelled.KeyTag [K,Option [T]]
但是,如果指定字段[K] .apply [Option [T]]的类型,它会编译,或者如果您只是先将其设置为val并返回该val,则以下方法体编译:< / p>
def pure[K <: Symbol, T](key: Witness.Aux[K], v: Option[T]): OptionalField[K, T] = {
val f = field[K](v)
f
}
}
如果您不使用OptionalField类型别名,它也会编译。
这是一个ScalaC错误还是scalaC推断类型的方式与这种field
方法无形无关?