我想对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})
答案 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))