如何在Scala中添加或添加元素到元组
发布时间:2020-12-16 09:42:59 所属栏目:安全 来源:网络整理
导读:我有一个元组,想要添加一个元素,而不会丢失类型的安全。这是我想要实现的: val tuple = ("",1,1f) // (String,Int,Float)val newTuple:(String,Float,Double) = tuple :+ 1d 解决方法 值得注意的是,您还可以在几行中为此编写代码生成器: val tupadd = f
我有一个元组,想要添加一个元素,而不会丢失类型的安全。这是我想要实现的:
val tuple = ("",1,1f) // (String,Int,Float) val newTuple:(String,Float,Double) = tuple :+ 1d 解决方法
值得注意的是,您还可以在几行中为此编写代码生成器:
val tupadd = for (n <- 2 to 20) yield { val t = (0 until n).map(i => ('A'+i).toChar).mkString(",") val u = ('A'+n).toChar val i = (0 until n).map(i => "x._"+(i+1)).mkString(",") List( s"implicit class TupOps$n[$t](val x: ($t)) extends AnyVal {",s" def :+[$u](y: $u) = ($i,y)",s" def +:[$u](y: $u) = (y,$i)","}" ).mkString("n") } 打印出来,粘在一个文件中,你很好: scala> implicit class TupOps2[A,B](val x: (A,B)) extends AnyVal { | def :+[C](y: C) = (x._1,x._2,y) | def +:[C](y: C) = (y,x._1,x._2) | } defined class TupOps2 scala> (1,"salmon") :+ true res15: (Int,String,Boolean) = (1,salmon,true) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |