【发布时间】:2015-01-24 13:17:59
【问题描述】:
我使用_ 作为创建匿名函数的占位符,问题是我无法预测 Scala 将如何转换我的代码。更准确地说,它错误地确定了我想要的匿名函数有多“大”。
List(1,2,3) foreach println(_:Int) //error !
List(1,2,3) foreach (println(_:Int)) //work
List(1,2,3) foreach(println(_:Int)) //work
使用-Xprint:typer我可以看到Scala将第一个转换为“一个大的匿名函数”:
x$1 => List(1,2,3) foreach(println(x$1:Int))
工作的 2th 3th 是 正确 转变为我想要的。
... foreach (x$1 => println(x$1:Int))
为什么会这样?规则是什么?
【问题讨论】:
-
请注意:您可以更简单地将其编码为
val x = List(1,2,3) foreach println
标签: scala lambda anonymous-function partial-application scala-placeholder-syntax