加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何将函数应用于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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读