Scala 类型和泛型:`[X<;:Int]`和`{type X<;:Int}之间的区别`

Scala 类型和泛型:`[X<;:Int]`和`{type X<;:Int}之间的区别`,scala,generics,types,existential-type,Scala,Generics,Types,Existential Type,据我所知,这两个函数是等效的: def x(xx: X forSome { type X <: Int }): Unit = () def y[Y <: Int](yy: Y): Unit = () defx(xx:x对于某些{typex它们确实非常相似,而且你并不是唯一一个感到困惑的人。我读过的关于存在主义类型的最好的文章确实给了你一个很好的解释(正如@DaunnC所提到的)。实际上还有第三种方式来表达同样的意思 由于种种原因,我认为有些东西只是句法上的糖分,而另一些则是语言演

据我所知,这两个函数是等效的:

def x(xx: X forSome { type X <: Int }): Unit = ()

def y[Y <: Int](yy: Y): Unit = ()

defx(xx:x对于某些{typex它们确实非常相似,而且你并不是唯一一个感到困惑的人。我读过的关于存在主义类型的最好的文章确实给了你一个很好的解释(正如@DaunnC所提到的)。实际上还有第三种方式来表达同样的意思

由于种种原因,我认为有些东西只是句法上的糖分,而另一些则是语言演变的产物。计划解决一些冗余问题并简化语言。特别是:

简化和统一的类型语法,用于所有形式的信息省略:存在类型和部分类型应用程序都用_表示,因为某些语法已被消除


正如您所注意到的,它是存在主义类型,别名是方括号中的通配符;因为它是不同的类型,所以无法描述优点和缺点;在这里您可以阅读更多:(带有示例),sry对于非竞争回复,没有时间写我自己的。