如果条件在map函数中

dum*_*ng3 5 scala list

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

List(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)

我希望所有的偶数乘以2,所有奇数除以2.

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

map(lambda x: 2*x if x % 2 == 0 else x/2, l)
Run Code Online (Sandbox Code Playgroud)

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

Yuv*_*kov 7

是.if-else在Scala中是一个条件表达式,意味着它返回一个值.您可以按如下方式使用它:

val result = list.map(x => if (x % 2 == 0) x * 2 else x / 2)
Run Code Online (Sandbox Code Playgroud)

产量:

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)
Run Code Online (Sandbox Code Playgroud)


小智 6

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

val result = list.map{
  case x if x % 2 == 0 => x * 2
  case x => x / 2
}
Run Code Online (Sandbox Code Playgroud)