我知道有一种干净的方法可以将函数映射到f:A => B
数组上,foo
类型Array[A]
为获取Array[B]
via foo.map{f}
。
是否有一种干净的方法来映射f
以bar:Array[Array[A]]
获得Array[Array[B]]
保留数组结构的bar
同时将所有A
元素映射到 type的元素B
?
一般来说,有没有办法映射任意维度数组的元素(即不仅是 2D,而且是 3D、4D 等)。
我知道有一种干净的方法可以将函数映射到f:A => B
数组上,foo
类型Array[A]
为获取Array[B]
via foo.map{f}
。
是否有一种干净的方法来映射f
以bar:Array[Array[A]]
获得Array[Array[B]]
保留数组结构的bar
同时将所有A
元素映射到 type的元素B
?
一般来说,有没有办法映射任意维度数组的元素(即不仅是 2D,而且是 3D、4D 等)。
您可以在地图内映射:
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)