将两个元组组合成一个新的更大的元组在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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- adb相关
- 为什么scala的模式加工在类型匹配的for循环中不起作用?
- 面对使用Scala Slick MySQL Akka Stream的问题
- 【Ionic+AngularJS 开发】之『个人日常管理』App(一)
- bootstrap_09按钮_表单
- Scala Swing:在Component上缺少JComponent方法
- scala(包)对象被反编译为java – 包含“new();”的静态初始
- Webservice_05_schema命名空间
- angular2 $routeChangeStart,$routeChangeSuccess,$routeCh
- scala – 为什么我的对象不是包的成员,如果它在一个单独的源