具有较高种类的类的自类型注释

问题描述 投票:0回答:2

给出:

abstract class Databases[F[_]]

我如何使此特征起作用:

// Marker trait signalling the database plugin supports StaticRoles
trait StaticRoles { this: Databases[_] => }

我想确保只在扩展了StaticRoles的类中混入Databases,但是我不在乎类型参数F的具体值。

代码返回:

error: _$1 takes no type parameters, expected: one

这很公平,但是它返回以下错误:

trait StaticRoles { this: Databases[_[_]] => }

我也尝试过:

trait StaticRoles { this: Databases[({type T[X[_]]})#T] => }

哪个给出错误:

error: kinds of the type arguments (AnyRef{type T[X[_]]}#T) do not conform to the expected kinds of the type parameters (type F) in class Databases.
       AnyRef{type T[X[_]]}#T's type parameters do not match type F's expected parameters:
       type X has one type parameter, but type _ has none
scala existential-type
2个回答
0
投票

我认为您应该定义如下:


0
投票

正确的是

© www.soinside.com 2019 - 2024. All rights reserved.