考虑协变类型参数 A
case class Foo[+A](a: A):
def bar(a: A) = a // error: covariant type A occurs in contravariant position
def zar(f: A => Int) = f(a) // ok
|
This is contravariant position. Why is it ok?
Foo(41).zar(_ + 1) // : Int = 42
Run Code Online (Sandbox Code Playgroud)
为什么zar当它出现在 中的逆变位置时它被接受为参数A => Int?