【发布时间】:2020-04-15 21:42:48
【问题描述】:
给定:
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 higher-kinded-types self-type