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

在Scala中添加整数元组列表

发布时间:2020-12-16 18:41:34 所属栏目:安全 来源:网络整理
导读:我希望添加一个整数元组列表,即给定一个arity元组的输入列表,产生一个arity元组k,其字段是列表中元组的相应字段的总和. 输入 List( (1,2,3),(2,3,-3),(1,1,1)) 产量 (4,6,1) 我试图使用foldLeft,但我无法编译它.现在,我正在使用for循环,但我正在寻找一个更简
我希望添加一个整数元组列表,即给定一个arity元组的输入列表,产生一个arity元组k,其字段是列表中元组的相应字段的总和.

输入

List( (1,2,3),(2,3,-3),(1,1,1))

产量

(4,6,1)

我试图使用foldLeft,但我无法编译它.现在,我正在使用for循环,但我正在寻找一个更简洁的解决方案.

解决方法

这可以使用 shapeless安全且非常简洁地完成,

scala> import shapeless._,syntax.std.tuple._
import shapeless._
import syntax.std.tuple._

scala> val l = List((1,-1),1))
l: List[(Int,Int,Int)] = List((1,1))

scala> l.map(_.toList).transpose.map(_.sum)
res0: List[Int] = List(4,3)

请注意,与依赖强制转换的解决方案不同,此方法是类型安全的,并且在编译时而不是在运行时检测到任何类型错误,

scala> val l = List((1,"foo",Any,foo,1))

scala> l.map(_.toList).transpose.map(_.sum)
<console>:15: error: could not find implicit value for parameter num: Numeric[Any]
              l.map(_.toList).transpose.map(_.sum)
                                          ^

(编辑:李大同)

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

    推荐文章
      热点阅读