如何将函数应用于Scala中的多维数组的每个元组?
发布时间:2020-12-16 10:01:29 所属栏目:安全 来源:网络整理
导读:我有一个二维数组,我想将一个函数应用于数组中的每个值. 这是我正在使用的: 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))) 我正在使用foreach来提取元组: scala array.f
我有一个二维数组,我想将一个函数应用于数组中的每个值.
这是我正在使用的: 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))) 我正在使用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))) 不应该坏.我想我错过了一些基础知识…… 解决方法
(更新:删除了不正确的理解代码 – 它返回了一维数组)
def foo(t: (Int,Int)): (Int,Int) = (t._1 + 1,t._2 + 1) array.map{_.map{foo}} 要应用于可变数组 val array = ArrayBuffer.tabulate(2,0)) for (sub <- array; (cell,i) <- sub.zipWithIndex) sub(i) = foo(cell._1,cell._2) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |