相关疑难解决方法(0)

在函数参数 A => B 的逆变位置接受协变类型 A

考虑协变类型参数 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

scala contravariance

3
推荐指数
1
解决办法
191
查看次数

标签 统计

contravariance ×1

scala ×1