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