1

斯卡拉代码:

val value = Some("100")
value.foreach( println(_.toInt) )   // !!! can't be compiled

错误信息是:

扩展函数缺少参数类型 ((x$1)=>x$1.toInt)

为什么不能编译?

PS:以下代码有效:

value.foreach( _.toInt )
value.foreach( x => println(x.toInt) )
4

1 回答 1

4

编译器消息有点误导,但它为您提供了一个提示:它告诉您它被解释_.toInt(x$1)=>x$1.toInt. 所以,把它放在适当的位置,你会得到

value.foreach( println( (x$1)=>x$1.toInt ) )

这显然不是你想要的。

这是 IMO 解决您的问题的最干净的方法:

value.map( _.toInt ).foreach( println )
于 2013-05-19T12:14:23.883 回答