在Scala lambdas中使用_

时间:2012-08-13 09:40:09

标签: scala

  

可能重复:
  Scala underscore - ERROR: missing parameter type for expanded function

假设以下代码编译(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 个答案:

答案 0 :(得分: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)))