有没有办法在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中有没有办法做到这一点?
答案 0 :(得分:6)
是。 Scala中的if-else
是conditional 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
}