“DEF someFun [_](A:强度)=一”,没有警告和没有错误。正常?

问题描述 投票:4回答:1

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

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

令我惊讶的是,得到了发出任何错误或警告,它运行你希望它的方式(这是很好的,我想),但它是正常的,编译器不知道类型参数的冗余或也许它意味着什么,使得它(?语义)与此不同:

def someFun(a:Int) = a
scala types type-inference
1个回答
9
投票

编译器生成这样的:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.