SLS 将类型参数子句的语法指定为
TypeParamClause ::= ‘[’ VariantTypeParam {‘,’ VariantTypeParam} ‘]’
FunTypeParamClause::= ‘[’ TypeParam {‘,’ TypeParam} ‘]’
VariantTypeParam ::= {Annotation} [‘+’ | ‘-’] TypeParam
TypeParam ::= (id | ‘_’) [TypeParamClause] [‘>:’ Type] [‘<:’ Type] {‘<%’ Type} {‘:’ Type} {‘<%’ Type} {‘<%’ Type}
我们在类型参数子句中看到 >:
, <:
, <%
, <%
,:
作为允许的保留名称。有没有一种方法可以在类型参数子句中使用广义类型约束符号名称<:<
,=:=
使得
def f[T =:= 42] = ???
会扩大到
def f[T](implicit ev: T =:= 42) = ???
类似于上下文绑定的方式
def f[T: Numeric] = ???
扩展到
def f[T](implicit ev: Numeric[T]) = ???