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) )
答案 0 :(得分:4)
编译器消息有点误导,但它为您提供了一个提示:它告诉您它将_.toInt
解释为(x$1)=>x$1.toInt
。所以,把它放到位,你得到
value.foreach( println( (x$1)=>x$1.toInt ) )
这显然不是你想要的。
这是IMO解决问题最简洁的方法:
value.map( _.toInt ).foreach( println )