为什么“value.foreach(setValue(_。toInt))”无法编译

时间:2013-05-19 11:45:43

标签: scala

Scala代码:

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) )

1 个答案:

答案 0 :(得分:4)

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

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

这显然不是你想要的。

这是IMO解决问题最简洁的方法:

value.map( _.toInt ).foreach( println )