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

将两个元组组合成一个新的更大的元组在scala中的干净方法?

发布时间:2020-12-16 09:12:43 所属栏目:安全 来源:网络整理
导读:假设我有以下元组: scala val t1 = Tuple2("abcd","efg")t1: (java.lang.String,java.lang.String) = (abcd,efg)scala val t2 = Tuple2(1234,"lmnop")t2: (Int,java.lang.String) = (1234,lmnop)scala val t3 = Tuple3("qrs","tuv","wxyz")t3: (java.lang.S
假设我有以下元组:

scala> val t1 = Tuple2("abcd","efg")
t1: (java.lang.String,java.lang.String) = (abcd,efg)

scala> val t2 = Tuple2(1234,"lmnop")
t2: (Int,java.lang.String) = (1234,lmnop)

scala> val t3 = Tuple3("qrs","tuv","wxyz")
t3: (java.lang.String,java.lang.String,java.lang.String) = (qrs,tuv,wxyz)

有没有一个友好的方法来组合它们(如有必要,需要两个步骤)到Tuple7?我真的在寻找一个组合任意大小的元组的一般答案,并且意识到由于最大元组大小上限会有局限性.我专门寻找一个元组结果,而不是一个集合.

解决方法

Shapeless需要依赖的方法类型(-Yindependent-method-types),我希望有2.9.1的可下载二进制文件,以便我可以简单地尝试一下,但它看起来很优雅.基于 this unit test,它将适用于您的案例:

import shapeless.Tuples._
import shapeless.HList._
val t7 = (t1.hlisted ::: t2.hlisted ::: t3.hlisted).tupled

虽然Miles表示不保证支持,但实际上它具有单元测试,源代码在github上具有开放源代码许可证,所以至少不仅仅是博客文章中的一个实验.

编辑:作品广告 – 花了一些时间编译,我不得不添加-Xss1m到sbt:

$scala -Ydependent-method-types -cp target/scala-2.9.1/shapeless_2.9.1-1.1.0.jar
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) Client VM,Java 1.7.0).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import shapeless.Tuples._
import shapeless.Tuples._

scala> import shapeless.HList._
import shapeless.HList._

scala> val t1 = Tuple2("abcd",wxyz)

scala> (t1.hlisted ::: t2.hlisted ::: t3.hlisted).tupled
res0: (java.lang.String,Int,efg,1234,lmnop,qrs,wxyz)

(编辑:李大同)

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

    推荐文章
      热点阅读