回答
你不能重新分配元組值。它們是故意不可變的:一旦你創建了一個元組,你可以確信它永遠不會改變。這對編寫正確的代碼非常有用!
但是如果你想要一個不同的元組呢?這就是複製方法就:
val tuple = (1, "test")
val another = tuple.copy(_2 = "new")
,或者如果你真的想用一個變種包含元組:
var tuple = (1, "test")
tuple = tuple.copy(_2 = "new")
或者,如果你真的想你的價值觀單獨改變,你可以使用的情況下,而不是類(可能與隱式轉換,因此您可以在需要時得到一個元組):
case class Doublet[A,B](var _1: A, var _2: B) {}
implicit def doublet_to_tuple[A,B](db: Doublet[A,B]) = (db._1, db._2)
val doublet = Doublet(1, "test")
doublet._2 = "new"
嗨,雷克斯,你提到了一段時間你正在使用'Muple'類型和其他可變集合的庫。在Github上看到它會很棒! –
@基普頓巴羅斯 - 是的,不是嗎?我希望我有時間完成它。我碰到了一堆專門化的bug,然後花時間去解決它們。 –
可以包裝器組件(一個或多個),你需要在一個案例類修改用var
成員,如:
case class Ref[A](var value: A)
var tuple = (Ref(1), "test")
tuple._1.value = 2
println(tuple._1.value) // -> 2
如果你想要避開'new Ref(1)',那麼使用'case class'似乎有點矯枉過正。 – jwvh
- 1. 斯卡拉 - 元組
- 2. 分配在斯卡拉
- 3. 斯卡拉:在元組
- 4. 斯卡拉分割字符串元組
- 5. 斯卡拉更新數組元素
- 6. 斯卡拉:如何由元組
- 7. 斯卡拉與分配
- 8. 分配方法斯卡拉
- 9. 如何映射轉換成重複元組在斯卡拉
- 10. 斯卡拉分組集合通過值
- 11. 斯卡拉找到元組
- 12. 斯卡拉元組解構
- 13. 斯卡拉元組選
- 14. 斯卡拉元組提取
- 15. 斯卡拉分區一組
- 16. 斯卡拉併發症。變量重新分配
- 17. 斯卡拉如何匹配兩個列表,地圖或元組
- 18. 斯卡拉如果條件內分配
- 19. 如何爲同一值分配給多個變種斯卡拉
- 20. 我如何組卡桑德拉行斯卡拉
- 21. 檢索數組元素在斯卡拉
- 22. 通過循環元組在斯卡拉
- 23. 元組3在斯卡拉/ Playframework
- 24. 如何合併由相同元素的元組在斯卡拉
- 25. 斯卡拉元組函數組合
- 26. 如何分割在斯卡拉
- 27. 斯卡拉/阿卡流中元素的分組
- 28. 正在更新斯卡拉列表值
- 29. 零元數在斯卡拉
- 30. 在斯卡拉如何在陣列組連續的元素
我看着http://www.scala-lang.org/api/current/index.html#scala.Tuple3,我仍然看不到複製選項 – deltanovember
複製方法是自動引入的,因爲'Tuple3'是一個'case class'。 – Nicolas