我有以下特点(简化的例子)参数化类型界限
trait F[A, M[_] <: Option[A]] {
def v: A
def f: A => M[A]
}
我希望能够创建以下特点
trait G[A] extends F[A, Some]
但是,这提供了以下错误
Error:(18, 20) type arguments [A,Some] do not conform to trait F's type parameter bounds [A,M[_] <: Option[A]]
如何限制M[_]
段计量型?
编辑:
A型F[A, M[_] <: Option[_]]
会工作。但其实我有另一个功能在我的特质
trait F[A, M[_] <: Option[_]] {
def v: A
def f: A => M[A]
def f2: A => A = {
(a: A) => f(a).get
}
}
,并在f2
这种情况下,get
不返回类型的值A
即使f
回报M[A]
Error:(17, 20) type mismatch;
found : _$1
required: A
(a: A) => f(a).get
你能改变M [_]到M [A]吗? –
感谢Rich,将'M [_]'改为'M [A]'实际上正在工作。 – synapski