我的问题是在我的特质中使用Function1并使事情正常工作,让我说我有以下特点
KeyStore
我有Z型的原因是Function1的类型签名是[T1-,R +]。我希望trait Foo[+X, +O, Z<:X]{
def bar: Z => O
def args:Option[Z]
}
case class A1(args:Option[String] = None) extends Foo[String,String,String]{
def bar = (x:String) => x+"..."
}
case class A2(args:Option[Int] = None) extends Foo[Int,String,Int]{
def bar = (x:Int) => x.toString
}
val mylist = List(A1(),A2())
的{{1}}类型现在为mylist
。所以基本上我希望Z也是协变的,这是不可能的。我该如何定义我的特质来解决这些问题?