出于好奇,我试图运行以下命令:
def someFun[_](a:Int) = a
令我惊讶的是,得到了发出任何错误或警告,它运行你希望它的方式(这是很好的,我想),但它是正常的,编译器不知道类型参数的冗余或也许它意味着什么,使得它(?语义)与此不同:
def someFun(a:Int) = a
编译器生成这样的:
def someFun(a: Int): Int = a;
但是,这并不是因为编译器知道这是不使用的,但因为类型擦除。您可以检查这样的事情与编译器的-print
选项。这也并不奇怪,这工作,因为它只是一个未使用的类型参数。