Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如果特征A[+;T]扩展了B,我应该能够在需要B的地方传递类型A[T]的类吗?_Scala - Fatal编程技术网

Scala 如果特征A[+;T]扩展了B,我应该能够在需要B的地方传递类型A[T]的类吗?

Scala 如果特征A[+;T]扩展了B,我应该能够在需要B的地方传递类型A[T]的类吗?,scala,Scala,以下是我所处的确切情况(我不想将其简化,以免遗漏错误的原因): 在我工作的框架中,有一个 trait RequestHeader{...} 还有另一个特点 trait Request[+A] extends RequestHeader{...} 有一个函数希望接收以下类型的参数: def f(arg: RequestHeader => Result) = {...} 我希望能通过考试 arg': Request[AnyContent] => Result 但是,这会导致编译器

以下是我所处的确切情况(我不想将其简化,以免遗漏错误的原因):

在我工作的框架中,有一个

trait RequestHeader{...}
还有另一个特点

trait Request[+A] extends RequestHeader{...}
有一个函数希望接收以下类型的参数:

def f(arg: RequestHeader => Result) = {...}
我希望能通过考试

arg': Request[AnyContent] => Result
但是,这会导致编译器抱怨。这是为什么?

的输入类型是相反的,如果你仔细想想,这是有道理的。考虑下面的更简单的例子:

trait Foo
case object Bar extends Foo
case object Baz extends Foo

def f(g: Foo => Foo): Foo = g(Baz)

如果我给
f
一个
Bar=>Foo
类型的函数,它将无法将其应用于
Baz
。(另一方面,一个类型为
Foo=>Bar
的函数就可以了。)

请求[\u]与此有什么关系?您定义了
标题[+A]
,但没有显示它的任何用法。键入错误,没有标题[+A]。现在编辑,谢谢。