我的元组被昏迷分开,看起来像这样:
("TRN_KEY", "88.330000;1;2")
我想在第二个位置添加更多信息。
例如:
我想将;99;99
添加到88.330000;1;2
,以便最后看起来像:
(TRN_KEY, 88.330000;1;2;99;99)
答案 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