2

可能重复:
Scala 下划线 - 错误:缺少扩展函数的参数类型

假设以下代码编译(peopleis a List[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))
4

1 回答 1

2

是的。

您可以使用这种命令来验证这一点:

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)))
于 2012-08-13T09:55:13.110 回答