命名类型参数 - 更多细节
在本节中,我们将详细介绍 命名类型参数(实验性)。
语法
语法添加如下
SimpleExpr1 ::= ...
| SimpleExpr (TypeArgs | NamedTypeArgs)
NamedTypeArgs ::= ‘[’ NamedTypeArg {‘,’ NamedTypeArg} ‘]’
NamedTypeArg ::= id ‘=’ Type
特别要注意,命名参数不能传递给类型构造函数
class C[T]
val x: C[T = Int] = // error
new C[T = Int] // error
class E extends C[T = Int] // error
兼容性注意事项
命名类型参数不会影响二进制兼容性,但会影响源代码兼容性:如果方法类型参数的名称发生更改,任何现有的对该参数的命名引用都会失效。这意味着方法类型参数的名称现在是库的公共 API 的一部分。
(未实现的提案:为了缓解这种情况,scala.deprecatedName
可以扩展到也适用于方法类型参数。)
本文档中