【问题标题】:Usage of _ in Scala lambdas [duplicate]在 Scala lambdas 中使用 _ [重复]
【发布时间】:2012-08-13 17:55:13
【问题描述】:

可能重复:
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))

【问题讨论】:

    标签: scala


    【解决方案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)))
    

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 2014-02-01
      • 2012-09-14
      相关资源
      最近更新 更多