如果地图函数中的条件

时间:2016-09-21 16:00:15

标签: list scala

有没有办法在scala中检查map函数中的条件?我有这个列表例如:

List(1,2,3,4,5,6)

我想要将所有偶数乘以2,将所有奇数除以2。

现在在python中,这看起来像这样:

map(lambda x: 2*x if x % 2 == 0 else x/2, l)

在Scala中有没有办法做到这一点?

2 个答案:

答案 0 :(得分:6)

是。 Scala中的if-elseconditional expression,意味着它返回一个值。您可以按如下方式使用它:

val result = list.map(x => if (x % 2 == 0) x * 2 else x / 2)

哪个收益率:

scala> val list = List(1,2,3,4,5,6)
list: List[Int] = List(1, 2, 3, 4, 5, 6)

scala> list.map(x => if (x % 2 == 0) x * 2 else x / 2)
res0: List[Int] = List(0, 4, 1, 8, 2, 12)

答案 1 :(得分:5)

你也可以把它写成PartialFunction,在某些情况下更容易阅读,特别是如果你有几个条件:

val result = list.map{
  case x if x % 2 == 0 => x * 2
  case x => x / 2
}