修改Scala中(String,String)变量中的位置

时间:2016-02-20 14:15:06

标签: scala

我的元组被昏迷分开,看起来像这样:

("TRN_KEY", "88.330000;1;2")

我想在第二个位置添加更多信息。

例如:

我想将;99;99添加到88.330000;1;2,以便最后看起来像:

(TRN_KEY, 88.330000;1;2;99;99)

4 个答案:

答案 0 :(得分:1)

一种方法是将你的元组去构造并将附加字符串连接到第二个元素:

object MyObject {
  val (first, second) = ("TRN_KEY","88.330000;1;2")
  (first, second + ";3;4"))
}

哪个收益率:

res0: (String, String) = (TRN_KEY,88.330000;1;2;3;4)

另一种方法是使用Tuple2.copy使用新值复制到元组,因为元组在设计上是不可变的。

答案 1 :(得分:1)

由于java.lang.ClassCastException: java.lang.String cannot be cast to com.mongodb.DBObject 是不可变的,因此您无法修改数据。 一个选项是Tuple2,然后使用var方法。

在Scala中由于copy这是一个相当便宜和快速的操作。

structural sharing

答案 2 :(得分:1)

这是一个完成工作的简单功能。它需要一个元组并将一个字符串附加到元组的第二个元素。

def appendTup(tup:(String, String))(append:String):(String,String) = {
  (tup._1, tup._2 + append)
}

以下是一些使用它的代码

val tup = ("TRN_KEY", "88.330000;1;2")
val tup2 = appendTup(tup)(";99;99")

println(tup2)

这是我的输出

(TRN_KEY,88.330000;1;2;99;99)

答案 3 :(得分:0)

如果你真的想让它变得可变,你可以使用案例类,如:

case class newTup(col1: String, var col2: String)

val rec1 = newTup("TRN_KEY", "88.330000;1;2")

rec1.col2 = rec1.col2 + ";99;99"

rec1
res3: newTup = newTup(TRN_KEY,88.330000;1;2;99;99)

但是,如上所述,最好使用.copy