如何在Array [Array]中使用map

时间:2018-03-03 23:49:32

标签: scala

我想对Array [Array]中的每个元素应用一个简单的匿名函数,并输出一个Array [Array]。此函数基本上将所有正数转换为1,所有负数均为-1。

我知道如何为Array做同样的事情,但不知道Array [Array]。有没有办法解开它?

val data = Array(Array(1,2),Array(-1,-2))
data.map(x => x.map{if (y > 0.0) 1.0 else 0.0})

1 个答案:

答案 0 :(得分:4)

第一张地图会给你每个Array[T],第二张地图会给你那个数组中的每个元素。

给出的,

scala> val data = Array(Array(1,2),Array(-1,-2))
data: Array[Array[Int]] = Array(Array(1, 2), Array(-1, -2))

这里是你如何在第二个数组的每个元素上应用函数,

scala> data.map(_.map(elem => if (elem > 0) 1 else -1 ))
res0: Array[Array[Int]] = Array(Array(1, 1), Array(-1, -1))

您也可以使用收集,

scala> data.map(_.collect{case elem if elem > 0 => 1 case _ => -1 })
res1: Array[Array[Int]] = Array(Array(1, 1), Array(-1, -1))

使用函数简化相同的工作

scala> def plusOneMinusOne(x: Int) = if (x > 0) 1 else -1
plusOneMinusOne: (x: Int)Int

scala> data.map(_.map(plusOneMinusOne)) 
res3: Array[Array[Int]] = Array(Array(1, 1), Array(-1, -1))