有没有办法在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中做到这一点?
是.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)