这是参数化类型的Scala语言规范中的拼写错误吗?

时间:2014-11-07 14:17:43

标签: scala language-specifications

U_i应该不是T_i,如下图所示?

同样的拼写错误(恕我直言)也是here

enter image description here

如果不是拼写错误,那么有人可以告诉我T_i的含义在哪里指定?

1 个答案:

答案 0 :(得分:3)

这不是一个错字,只是一个非常糟糕的变量选择和关于它们绑定范围的混淆:)

在第一段中,从“A parametrized”到“,a_n。”,U_i变量的绑定指的是类型参数,而T绑定到实际的参数类型。例如,假设你有

val x : Map[Int, String]

你的T将是Map,你的U_1将是Int,而U_2将是String。

另一方面,第二段与前一段完全断开。这里类型参数绑定到变量T_1 ... T_n,参数类型 NOT 绑定到任何东西,并且您将L_1 ... L_n绑定到类型参数的下限和a将U_1 ... U_n绑定到参数类型的上限。

在这种情况下,如果你有(这不编译,它只是例如):

val x : Map[T1 <: AnyRef, T2 >: Int]

然后你将你的T1,T2作为实际的类型参数,U1 = AnyRef,L2 = Int。

希望现在更清楚:)(但是,变量选择不当)

要了解您是否理解,请尝试猜测第二个示例中的U2和L1是什么。提示:查看Scala的类型层次结构;)