1
2
此错误并非特定于依赖路径的类型。如果你试图匹配任何
虽然很难说这是否适用于您的实际用例,但您也可以重构代码以避免完全匹配,并通过多态性(可能)更优雅地处理它。自从上次
如果
|
2
0
实际上,这个问题似乎非常特定于依赖路径的类型:问题是q和cq的类型。q、 结果是与查询不兼容的类型。结果,因为Scala类型检查器不知道,所以该查询和q和qc必须是相同的引用。 因此,Query[Query.Result]实际上需要运行时类型检查。当我试图删除类型参数并只使用内部结果时,我注意到了这一点。然后模式匹配不再生成警告,但q.exec的返回类型将与query.Result不兼容。 不使用@unchecked或asInstanceOf等的一个解决方案是将Result转换为QueryLike的类型参数。一般来说,对于希望“脱离上下文”自由传递的内容,不应该使用抽象类型成员。因此,将类型成员转换为继承层次结构中某个位置的类型参数有点奇怪。 因此,正如编译器所知,这很好,因为他不必检查类型参数:
另一种方法是将该方法添加到CachedQuery和Query的公共基本特征中。
要改变这一点,Scala可能必须能够确定两个稳定的访问器何时相同。 |