据我所知,这两个函数是等价的:
def x(xx: X forSome { type X <: Int }): Unit = ()
def y[Y <: Int](yy: Y): Unit = ()
根据我的观察,现在人们大多使用第二种形式(使用[]
),同时我有时会看到使用第一种形式的文章(大多是旧文章,讨论存在类型)({{1 }})。
有2个符号的原因是什么?有没有一个专业人士或缺点你可以\不能使用一个或另一个?
答案 0 :(得分:1)
他们确实非常相似,你并不孤单。我读过关于存在类型的最好的文章给你一个很好的解释确实here(正如@DaunnC提到的那样)。实际上还有第三种方式在Abstract Types中表达相同的内容。
由于理由,我认为有些事情只是语法糖和语言演变的其他产物。 Scala 2.14计划解决部分冗余并简化语言。特别是:
所有形式的信息省略的简化和统一类型语法:存在类型和部分类型应用程序都用_表示,因为某些语法被删除。