scala - 在 Scala 中是否有类型变量 'm forSome { type m[O] <: UpperBound[O] }` 的简写?
问题描述
问题:
trait UpperBound[O]
trait High[F[O] <: UpperBound[O]]
def canEqual(that :Any) = that.isInstanceOf[High[_]]
def high(h :High[_]) = ???
不编译,因为 scalac 看到的是_
类型而不是它期望的类型构造函数。如何解决它,理想情况下不写小说?
原始问题(在编辑回复 Dmytro 的回答之前)有:
def canEqual(that :Any) = that.isInstanceOf[High[m forSome { type m[O] <: UpperBound[O] }]]
def high(h :High[m forSome { type m[O] <: UpperBound[O] }] = ???
通过使用一些通配符表达式来编写上述两种方法是否有更短的方法?简单地使用_
inHigh
的类型参数位置不起作用,因为类型不匹配,_[_]
甚至不是有效的类型表达式。
解决方案
推荐阅读
- orientdb - 边缘指向边缘?
- json - PostgreSQL JSON 查询返回 NULL
- python - 不能腌制
:它与 __main__.stringToNgrams 不是同一个对象 - javascript - Angular 6 按日期排序对象数组
- sql - 如果列重复,SQL 查询将停止工作
- regex - Perl 就地编辑:在 X12850 格式文件中查找和替换
- javascript - 如何创建一个将在页面刷新后工作的计时器循环?
- javascript - 如何使用linkedin API获取linkedin上个人资料的url
- java - 向 Android 布局添加圆角会留下白边
- google-chrome-extension - 谷歌浏览器扩展从站点的另一个页面获取 DOM