在Scala中迭代三个以上的数组
发布时间:2020-12-16 09:08:30 所属栏目:安全 来源:网络整理
导读:我必须将一堆愚蠢的逗号分隔的字符串转换为最终的对象.我首先将字符串拆分为 Arrays.然后我需要同时迭代所有这些并从四个值中构建一个Object. val s1 = Array(1,2,3)val s2 = Array("a","b","c")val s3 = Array(10,20,30)val s4 = Array("u","v","w") 目标Ob
我必须将一堆愚蠢的逗号分隔的字符串转换为最终的对象.我首先将字符串拆分为
Arrays.然后我需要同时迭代所有这些并从四个值中构建一个Object.
val s1 = Array(1,2,3) val s2 = Array("a","b","c") val s3 = Array(10,20,30) val s4 = Array("u","v","w") 目标Object如下所示: case class Data(a: Int,b: String,c: Int,d: String) 第一个Data对象必须打印 Data(1,a,10,u) 等等.我找到了三个项目的解决方案: (s1,s2,s3).zipped foreach { (v1,v2,v3) => println(v1,v3) } 哪个印刷品: (1,10) (2,b,20) (3,c,30) 如果有四个或更多阵列,则不会这样做. Zipped没有为4元组定义: error: value zipped is not a member of (Array[Int],Array[String],Array[Int],Array[String]) 我的Scala有点生疏,所以也许我错过了明显的东西(比如带索引的迭代或其他东西). 解决方法
它不漂亮,但应该工作(具有任意数量的行长)
val items: Array[Array[Any]] = Array ( Array(1,3),Array("a","c"),Array(10,30),Array("u","w") ) items.transpose.map { case Array(a: Int,d: String) => Data(a,d) } // Array(Data(1,u),Data(2,v),Data(3,30,w)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |