我想对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})
第一张地图会给你每个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))
你也可以用collect,
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))