jav*_*dba 2 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))
Run Code Online (Sandbox Code Playgroud)
但是我们的用例需要的是一个可变向量的向量.怎么办?
只需执行嵌套调用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))
Run Code Online (Sandbox Code Playgroud)
2D 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, _)))
Run Code Online (Sandbox Code Playgroud)