对于"Box [+ T]",我可以说"Box type是covariant",它是否正确?

Fre*_*ind 5 type-systems scala covariance

假设我定义了一个类型构造函数Box:

trait Box[+T]
Run Code Online (Sandbox Code Playgroud)

什么是正确的?

  1. 类型Box是协变的
  2. 类型构造函数Box是协变的
  3. 类型参数T是协变的
  4. 类型T构造函数中的type参数Box是协变的
  5. 如果所有这些都不正确,那么正确的表达方式是什么?

Art*_*hou 5

关于Scala中的函数编程一书中的差异:

在声明中 trait List[+A],+类型参数前面A方差注释,表示A是协变或"正"参数List.这意味着,例如, List[Dog]被认为是子类型 List[Animal],假设Dog是子类型Animal.


Ven*_*Ven 1

正确的是:

“类型 Box 在 T 中是协变的”