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」 –