gpt4 book ai didi

scala - 如何在 Scala 中将函数应用于多维数组的每个元组?

转载 作者:行者123 更新时间:2023-12-02 15:49:25 26 4
gpt4 key购买 nike

我有一个二维数组,我想对数组中的每个值应用一个函数。

这是我正在处理的内容:

scala> val array = Array.tabulate(2,2)((x,y) => (0,0))
array: Array[Array[(Int, Int)]] = Array(Array((0,0), (0,0)), Array((0,0), (0,0)))

我使用 foreach 来提取元组:

scala> array.foreach(i => i.foreach(j => println(i)))           
[Lscala.Tuple2;@11d559a
[Lscala.Tuple2;@11d559a
[Lscala.Tuple2;@df11d5
[Lscala.Tuple2;@df11d5

让我们做一个简单的函数:

//Takes two ints and return a Tuple2. Not sure this is the best approach.
scala> def foo(i: Int, j: Int):Tuple2[Int,Int] = (i+1,j+2)
foo: (i: Int,j: Int)(Int, Int)

这会运行,但需要应用于数组(如果可变)或返回新数组。

scala> array.foreach(i => i.foreach(j => foo(j._1, j._2)))

应该不会太糟糕。我认为我缺少一些基础知识......

最佳答案

(更新:删除了不正确的 for 理解代码 - 它返回了一个一维数组)

def foo(t: (Int, Int)): (Int, Int) = (t._1 + 1, t._2 + 1)
array.map{_.map{foo}}

应用于可变数组

val array = ArrayBuffer.tabulate(2,2)((x,y) => (0,0))
for (sub <- array;
(cell, i) <- sub.zipWithIndex)
sub(i) = foo(cell._1, cell._2)

关于scala - 如何在 Scala 中将函数应用于多维数组的每个元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3912528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com