首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在scala中对高类类型执行等效的T[Any]

如何在scala中对高类类型执行等效的T[Any]
EN

Stack Overflow用户
提问于 2022-09-18 01:50:14
回答 1查看 80关注 0票数 0

上下文:这是使用scala-3。

代码语言:javascript
复制
final case class TableSchema[T[_[_]] <: Table]( /* ... */ )
代码语言:javascript
复制
// 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?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-18 02:23:34

我想,正确的是

代码语言:javascript
复制
final case class Schema(tableSchemas: List[TableSchema[_ <: ([_[_]] =>> Table)]])

或者没有额外的括号

代码语言:javascript
复制
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中测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73759623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档