在scala map函数中使用下划线

时间:2018-02-14 08:19:12

标签: scala

我有一个功能

val output2 = list
  .map(i =>
    if (i % 2 == 0) println("This is even number")
    else println("This is odd number")
  )

我可以在lambda表达式中使用下划线而不是i吗?如果是这样的话?

我读过如果变量在表达式中只使用一次,则可以用_替换变量。

1 个答案:

答案 0 :(得分:0)

_仅在简单表达式中有用。如果你仍然坚持要看你的程序应该只用_,你应该有类似的东西:

list.map(_ % 2 == 0) foreach { 
    if(_) println("This is even number") else println("This is odd number") 
}

另请注意,您的表达式并没有达到您期望的效果。变量output2包含4个Unit s(List((), (), (), ()))的列表,我猜这不是您最初想要的。