关于Scala泛型的简单问题

Mic*_*ael 4 generics scala

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

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

def foo(x:X[_]){}
Run Code Online (Sandbox Code Playgroud)
def foo(x:X[Any]){}
Run Code Online (Sandbox Code Playgroud)

上面这些声明之间究竟有什么区别?

Dan*_*ral 9

第一种是存在型,第二种是普通型.第一种语法实际上意味着:

def foo(x:X[t] forSome { type t }){}
Run Code Online (Sandbox Code Playgroud)

这意味着什么x是类型X[t],哪里t可以是任何未指定的type t.

直觉上,X[_]意味着类型参数X是无关紧要的,而X[Any]它必须是Any.