如何在Array [Array]中使用map

问题描述 投票:0回答:1

我想对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})
scala
1个回答
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))

你也可以用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))
© www.soinside.com 2019 - 2024. All rights reserved.