arrays - 在 Scala 中将函数映射到多维数组

标签 arrays scala map multidimensional-array

我知道有一种干净的方法可以将函数 f:A => B 映射到数组 foo 类型 Array[A] 通过 foo.map{f} 得到一个 Array[B]

有没有一种干净的方法可以将 f 映射到 bar:Array[Array[A]] 上以获得 Array[Array[B]] 保留 bar 的数组结构,同时将所有 A 元素映射到 B 类型的元素?

一般来说,有没有一种方法可以映射任意维度的数组元素(即不仅是 2D,还包括 3D、4D 等)。

最佳答案

您可以在 map 中进行映射:

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)

关于arrays - 在 Scala 中将函数映射到多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10049581/

相关文章:

用于解析程序中标识符的 Python 包(C、Scala、Lisp)?

scala - 使用继承时如何设计不可变模型类

c++ - 具有不完整值类型的映射

java - 在 Mollweide 投影中获取我的世界地图中某个点的经度纬度

entity-framework - 将属性映射到 Entity Framework CTP5 中的(不同命名的)外键字段

mysql - 按字段排序或不带 IN() 的 Find_in_set

python - 为什么列表元素查找在 Python 中是 O(1)?

c++ - 如何对数组使用 while 循环?

algorithm - 如何从范围创建列表

javascript - 从 MySQL 导出到 PHP 中的对象数组,然后导出到 JavaScript