上下文:这是使用scala-3。
final case class TableSchema[T[_[_]] <: Table]( /* ... */ )// None of these work...
final case class Schema(tableSchemas: List[TableSchema[_ <: Table]])
final case class Schema(tableSchemas: List[[t[_[_]] <: Table] => TableSchema[t]])
final case class Schema(tableSchemas: List[[t[_[_]] <: Table] =>> TableSchema[t]])
final case class Schema(tableSchemas: List[TableSchema[_[_[_]] <: Table]]) // isnt even valid syntax?发布于 2022-09-18 02:23:34
我想,正确的是
final case class Schema(tableSchemas: List[TableSchema[_ <: ([_[_]] =>> Table)]])或者没有额外的括号
final case class Schema(tableSchemas: List[TableSchema[_ <: [_[_]] =>> Table]])即存在型的未知量_ TableSchema[_]是常数型Table的一个子类型。
引用类型Lambdas -更多细节/与参数化类型定义的关系的话
参数化抽象类型
type T[X] >: L <: U被视为非参数化抽象类型的简写,类型lambdas为界。type T >: ([X] =>> L) <: ([X] =>> U)
在Scala3.1.3中测试。
https://stackoverflow.com/questions/73759623
复制相似问题