Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scala中基于先前索引构建数组/列表的惯用方法_Scala - Fatal编程技术网

在Scala中基于先前索引构建数组/列表的惯用方法

在Scala中基于先前索引构建数组/列表的惯用方法,scala,Scala,我试图用Scala中的自回归公式建立一个时间序列。该等式将查找目标阵列的先前索引和其他两个阵列的当前索引。虚拟方程示例: z_i=z[i-1]-x[i]+y[i] 这是命令式的(见下面的C++示例),但我正在试图找出斯卡拉的惯用方法。我已经创建了一个带有while循环的解决方案,但它感觉笨重且不美观 #包括 #包括 int main(){ std::向量x{1,2,3,4}; std::向量y{10,9,8,7}; 向量z{0,0,0,0}; 对于(int i=1;i

我试图用Scala中的自回归公式建立一个时间序列。该等式将查找目标阵列的先前索引和其他两个阵列的当前索引。虚拟方程示例:
z_i=z[i-1]-x[i]+y[i]

这是命令式的(见下面的C++示例),但我正在试图找出斯卡拉的惯用方法。我已经创建了一个带有

while
循环的解决方案,但它感觉笨重且不美观

#包括
#包括
int main(){
std::向量x{1,2,3,4};
std::向量y{10,9,8,7};
向量z{0,0,0,0};
对于(int i=1;istd::cout不是修改现有的
z
,而是要从
x
y
构建它

val x = Vector(1, 2, 3, 4)
val y = Vector(10, 9, 8, 7)
val z = (x.tail zip y.tail).scanLeft(0){case (nz,(nx,ny)) => nz - nx + ny}
//z: Vector[Int] = Vector(0, 7, 12, 15)

您不需要修改现有的
z
,而需要从
x
y
构建它

val x = Vector(1, 2, 3, 4)
val y = Vector(10, 9, 8, 7)
val z = (x.tail zip y.tail).scanLeft(0){case (nz,(nx,ny)) => nz - nx + ny}
//z: Vector[Int] = Vector(0, 7, 12, 15)