Scala 使用可变条目填充或制表

标签 scala vector mutable

以下生成不可变向量的向量:

var darr = Vector.tabulate(2, 3){ (a,b) => a*2+b }
darr: scala.collection.immutable.Vector[scala.collection.immutable.Vector[Int]] = Vector(Vector(0, 1, 2), Vector(2, 3, 4))

但我们的用例需要的是一个由可变 向量组成的向量。怎么办?

最佳答案

只需对 tabulate 进行嵌套调用,其中内部调用在可变序列上,如 Buffer:

import collection.mutable.Buffer
Vector.tabulate(2)(a => Buffer.tabulate(3)(b => a*2+b))
// Vector(ArrayBuffer(0, 1, 2), ArrayBuffer(2, 3, 4))

无论如何,二维 tabulate 实际上只是嵌套 tabulate 的语法糖:

// From GenTraversableFactory
def tabulate[A](n1: Int, n2: Int)(f: (Int, Int) => A): CC[CC[A]] =
  tabulate(n1)(i1 => tabulate(n2)(f(i1, _)))

关于Scala 使用可变条目填充或制表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023640/

相关文章:

java - 如何在重启之间保持 intellij idea 索引?

scala - 阻止 IntelliJ IDEA Scala 工作表删除空行

math - 向量数量不同的两个图节点之间的余弦相似度计算

angular - 如何使用 ngx-leaflet( Angular 方式)创建矢量图 block map ?

c++ - 我有一个 STL vector 列表,我想按每个 vector 的第一个元素对它们进行排序

java - Scala:从返回 Seq 的函数返回可变缓冲区

scala - 如何在不阻塞的情况下使用 Akka 询问模式

python - 多处理中的可变变量

rust - 迭代递归结构时无法获取可变引用 : cannot borrow as mutable more than once at a time

scala - 在sbt中,如何指定spark依赖的hadoop版本呢?