arrays - 将 Range 直接映射到 Array

标签 arrays scala vector mapping temporary

以下代码创建一个临时向量:

0.to(15).map(f).toArray
^^^^^^^^
Sequence
^^^^^^^^^^^^^^^
    temp Vector
^^^^^^^^^^^^^^^^^^^^^^^
                  Array

以下代码创建一个临时数组:
0.to(15).toArray.map(f)
^^^^^^^^
Sequence
^^^^^^^^^^^^^^^
     temp Array
^^^^^^^^^^^^^^^^^^^^^^^
                  Array

有没有办法将 f 映射到 Sequence 并直接获得一个数组,而不产生临时的?

最佳答案

您可以使用 breakOut :

val res: Array[Int] = 0.to(15).map(f)(scala.collection.breakOut)

或者
0.to(15).map[Int, Array[Int]](f)(scala.collection.breakOut)

或使用 view :
0.to(15).view.map(f).to[Array]

this document有关 View 的更多详细信息。

关于arrays - 将 Range 直接映射到 Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46077033/

相关文章:

python - 如何获取所有数组边?

scala - 在Akka Actor 中堆叠多个特征

scala - 使用 scala sortWith 函数对对象中的多个字段进行排序

java - Spark 使用 sc.textFile 从 S3 读取文件(“s3n ://. ..)

arrays - 最近的 Fortran 标准中提供了此功能吗?

c - malloc 如何申请堆内存

C++ 使用默认值在 Struct 中实例化 2D Vector

c++ - 为什么 Vector3D 类中的同一个操作有两种不同类型的运算符重载?

php - html 中的图形 SVG

c# - 在 Newtonsoft C# 中加载 JSON 数组时读取错误