4

出于好奇,我尝试运行以下命令:

def someFun[_](a:Int) = a

令我惊讶的是,没有发出任何错误或警告,并且它以您期望的方式运行(我想这很好)但是编译器不理解类型参数的冗余是否正常,或者它可能意味着它的某些东西(语义上?)与此不同:

def someFun(a:Int) = a
4

1 回答 1

9

编译器生成这个:

def someFun(a: Int): Int = a;

但这并不是因为编译器知道这是未使用的,而是因为类型擦除。您可以使用-print编译器的选项检查这样的事情。这也不足为奇,因为它只是一个未使用的类型参数。

于 2012-06-08T06:42:40.093 回答