gpt4 book ai didi

scala - 类型和泛型 : difference between `[X <: Int]` and `{type X <: Int }`

转载 作者:行者123 更新时间:2023-12-04 21:39:13 25 4
gpt4 key购买 nike

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

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

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

根据我的观察,现在人们大多使用第二种形式(使用 [] ),同时我有时会看到使用第一种形式( forSome )的文章(主要是旧的,讨论存在类型)。

有 2 个符号背后的原因是什么?是否有优点\缺点或你不能\不能使用一个或另一个?

最佳答案

它们确实非常相似,您并不孤单。我读过的关于存在类型的最好的文章确实给了你一个很好的解释 here (正如@DaunnC 提到的)。在Abstract Types中实际上还有第三种表达方式。 .

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

Simplified and unified type syntax for all forms of information elision: existential types and partial type applications are both expressed with _, forSome syntax is eliminated.

关于scala - 类型和泛型 : difference between `[X <: Int]` and `{type X <: Int }` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com