我知道有一种干净的方法可以将函数f:A => B
映射到foo
类型的Array[A]
数组,以通过Array[B]
获得foo.map{f}
。
是否有一种干净的方法可以将f
映射到bar:Array[Array[A]]
以获得Array[Array[B]]
,以便在映射所有bar
时保留A
的数组结构元素到B
类型的元素?
一般来说,有没有办法映射任意维度的数组元素(即不只是2D而是3D,4D等)。
答案 0 :(得分:6)
您可以在地图中进行映射:
bar.map(_.map(f))
我怀疑有一种类型安全的方法可以映射任意维度的数组,因为不同维度的数组的类型不同。但它足以简单地保持嵌套映射调用:
scala> val bam = new Array[Array[Array[Array[Array[A]]]]](0)
bam: Array[Array[Array[Array[Array[A]]]]] = Array()
scala> bam.map(_.map(_.map(_.map(_.map(f)))))
res1: Array[Array[Array[Array[Array[B]]]]] = Array()
实际上,我发现shapeless具有“对任意嵌套数据结构的通用映射和折叠操作”。我没有使用Array
进行测试,但看起来它适用于其他数据结构。
everywhere(f)(bam)