使用先前值填充双打数组

时间:2016-02-10 16:38:46

标签: list scala

我有一个简单的问题,我失败了,所以在这里寻求帮助。

我有一个数组[Ints]类似于:

val A = Array(1,0,0,0,2,0,0,3,4,5,0,6,6)

我想这样做,如果A中的Int为零,它应该继承先前的非零数字,Desired输出应该如下所示:

Array(1,1,1,1,2,2,2,3,4,5,5,6,6)

所以我试着拉链他们:

(A.drop(1),A.dropRight(1)).zipped.map((x,y)=>(x._1,y._2 match{
case 0 => x._2
case _ => y._2}))

然而,这不起作用,因为它只生成

的向量
[1,1,0,0,2,2,0,3,4,5,5,6,6] 

执行此任何有效方法?

2 个答案:

答案 0 :(得分:2)

尝试扫描方法:

A.scan(0) { case (a, b) => if (b != 0) b else a}.tail

答案 1 :(得分:1)

你可以这样做:

scala> val A = Array(1,0,0,0,2,0,0,3,4,5,0,6,6)
scala> A.scan(0) {case (i, j) => if (j != 0) j else i}.tail
res2: Array[Int] = Array(1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5, 6, 6)