由昏迷,看起来像这个我的元组分开:修改的(字符串,字符串)变量的位置在斯卡拉
("TRN_KEY", "88.330000;1;2")
我想一些更多的信息添加到第二位置。
例如:
我想补充;99;99
到88.330000;1;2
这样在最后它会是什么样子:
(TRN_KEY, 88.330000;1;2;99;99)
由昏迷,看起来像这个我的元组分开:修改的(字符串,字符串)变量的位置在斯卡拉
("TRN_KEY", "88.330000;1;2")
我想一些更多的信息添加到第二位置。
例如:
我想补充;99;99
到88.330000;1;2
这样在最后它会是什么样子:
(TRN_KEY, 88.330000;1;2;99;99)
的一种方法是去谱写你的元组和CONCAT第二个元素的附加字符串:
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
将新值复制到元组,因为元组是不可变的。
你应该使用'+'而不是'+ =' –
@Lukasz - 谢谢。 –
由于Tuple2
是不可变的,所以不能修改数据。 一个选项将会有一个var
,然后使用copy
方法。
在斯卡拉由于structural sharing
这是一个相当便宜和快速的操作。
scala> var tup = ("TRN_KEY","88.330000;1;2")
tup: (String, String) = (TRN_KEY,88.330000;1;2)
scala> tup = tup.copy(_2 = tup._2 + "data")
tup: (String, String) = (TRN_KEY,88.330000;1;2data)
感谢您的回答!它效果很好!虽然现在我还有一个问题,如果这个元组从列表中出来,可以这样说:List((TRN2,88.330000; 1; 2),(PAY,1; 3; 4))怎么可能我修改此列表的第一个位置? – Ewik
''var var myList = ...; myList = modify(myList.head):: myList.tail''' –
这是一个简单的功能,可以完成工作。它需要一个元组并将一个字符串追加到元组的第二个元素。
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)
如果你真的想让它可变的,你可以使用的情况下,类如:
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
感谢您的回答!它效果很好!虽然现在我还有一个问题,如果这个元组从列表中出来,可以这样说:List((TRN2,88.330000; 1; 2),(PAY,1; 3; 4))怎么可能我修改此列表的第一个位置? – Ewik