答案 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的类型层次结构;)