dsg*_*dsg 3 arrays scala map multidimensional-array
我知道有一种干净的方法可以f:A => B在一个数组上映射一个函数,foo类型Array[A]来获取一个Array[B]via foo.map{f}.
有没有干净的方式映射f在bar:Array[Array[A]]得到一个Array[Array[B]]可以保留的阵列结构bar,同时映射所有的A元素类型的元素B?
通常,有没有办法映射任意维度的数组元素(即不仅仅是2D而是3D,4D等).
你可以在地图中映射:
bar.map(_.map(f))
Run Code Online (Sandbox Code Playgroud)
我怀疑有一种类型安全的方法来映射任意维度的数组,因为不同维度的数组是不同类型的.但它足够简单,可以保持嵌套地图调用:
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()
Run Code Online (Sandbox Code Playgroud)
实际上,我发现无形状具有"对任意嵌套数据结构的通用映射和折叠操作".我没有测试过Array,但看起来它适用于其他数据结构.
everywhere(f)(bam)
Run Code Online (Sandbox Code Playgroud)