由昏迷,看起來像這個我的元組分開:修改的(字符串,字符串)變量的位置在斯卡拉
("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