关于Scala泛型的简单问题

发布于 2024-10-24 03:18:23 字数 193 浏览 0 评论 0原文

X[Any]X[_] 之间有什么区别?

例如,让我们考虑下面的两个函数:

def foo(x:X[_]){}
def foo(x:X[Any]){}

上面这些声明之间到底有什么区别?

What is the difference between X[Any] and X[_] ?

Let's consider, for example, two functions below:

def foo(x:X[_]){}
def foo(x:X[Any]){}

What is exactly the difference between these declarations above?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七分※倦醒 2024-10-31 03:18:23

第一个是存在型,第二个是正常型。第一个语法实际上意味着:

def foo(x:X[t] forSome { type t }){}

这意味着 x 的类型为 X[t],其中 t 可以是任何未指定的 输入t

直观上,X[_] 表示 X 的类型参数不相关,而 X[Any] 表示它必须是 Any< /代码>。

The first is an existential type, and the second is a normal type. The first syntax actually means this:

def foo(x:X[t] forSome { type t }){}

What this means is that x is of type X[t], where t can be any unspecified type t.

Intuitively, X[_] means the type parameter of X is irrelevant, whereas X[Any] says it must be Any.

删除会话 2024-10-31 03:18:23

区别在于微不足道,

scala> class X[T]   
defined class X

scala> def type_of[T](x: X[T])(implicit m: Manifest[T]) = m.toString
type_of: [T](x: X[T])(implicit m: Manifest[T])java.lang.String

scala> val x1: X[Any] = new X
x1: X[Any] = X@1a40cfc

scala> val x2: X[_] = new X  
x2: X[_] = X@29d838

scala> type_of(x1)
res10: java.lang.String = Any

scala> type_of(x2)
res11: java.lang.String = _ <: Any

我无法说出一种情况,即您可以使用 Any 但不能使用 _ ,反之亦然。

The difference is in insignificant

scala> class X[T]   
defined class X

scala> def type_of[T](x: X[T])(implicit m: Manifest[T]) = m.toString
type_of: [T](x: X[T])(implicit m: Manifest[T])java.lang.String

scala> val x1: X[Any] = new X
x1: X[Any] = X@1a40cfc

scala> val x2: X[_] = new X  
x2: X[_] = X@29d838

scala> type_of(x1)
res10: java.lang.String = Any

scala> type_of(x2)
res11: java.lang.String = _ <: Any

I can not name a situation, when you can use Any but can not use _ and vice verse.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文