2012-08-13 62 views
1

可能重複:
Scala underscore - ERROR: missing parameter type for expanded function用法_斯卡拉lambda表達式

假設下面的代碼編譯(peopleList[Person]):

people.map(_.address).foreach(println) 

爲什麼以下:

people.foreach(println(_.address)) 

生成消息

missing parameter type for expanded function ((x$4) => x$4.address) 

這似乎是的情況下的通配符嵌套在一個方法調用的任何時間。

這是因爲編譯器會試圖擴展的代碼?:

people.foreach(println(x => x.address)) 

回答

1

是。

您可以驗證這一點使用這種命令:

echo object Test { (1 to 1).map(println(_.address)) } > test.scala 
scalac -Xprint:typer test.scala 

你會在結果發現這一點:

intWrapper(1).to(1).map[B, That](println(((x$1) => x$1.address)))