以下代码创建了一个临时向量:
以下代码创建了一个临时数组:
有没有一种方法可以将 f 映射到 Sequence 上并直接得到一个数组,而不产生临时结果?
0.to(15).map(f).toArray
^^^^^^^^
Sequence
^^^^^^^^^^^^^^^
temp Vector
^^^^^^^^^^^^^^^^^^^^^^^
Array
以下代码创建了一个临时数组:
0.to(15).toArray.map(f)
^^^^^^^^
Sequence
^^^^^^^^^^^^^^^
temp Array
^^^^^^^^^^^^^^^^^^^^^^^
Array
有没有一种方法可以将 f 映射到 Sequence 上并直接得到一个数组,而不产生临时结果?
breakOut
的作用吗? - fredoverflow0.to(15).map[Int, Array[Int]](f)
已经可以正常工作,无需额外添加(scala.collection.breakOut)
参数列表。 - fredoverflowbreakOut
是一种方法,它可以根据所需的输入和输出类型找到正确的CanBuildFrom
实例,否则编译器可能无法正确推断。有了正确的CanBuildFrom
实例,您可以在映射原始集合时创建新类型的集合。更多详细信息请参见 https://dev59.com/OXI-5IYBdhLWcg3wta1q。 - Ziyang Liu0.to(15).map[Int, Array[Int]](_ + 1)
对我不起作用,因为编译器抱怨找不到CanBuildFrom
。 - Ziyang Liuf
是一个具体的函数,因此编译器已经知道了类型。它能够与(_ + 1: Int => Int)
或类似的东西一起工作吗? - fredoverflow