string - Scala List take() 方法如何更改 val 类型?
问题描述
take()
我刚刚发现String 中的方法有一个奇怪的行为。
这是我的代码:
val ji = Array("134","231","2321")
var t = ji
var i = ji(1).take(2)
i = i + 8
t(1)= i
println(ji.mkString(",")) //134,238,2321
println(t.mkString(",")) //134,238,2321
我预计它会ji
保持其价值,但它似乎也受到了影响t
。我想创建一个新的ji
然后更改为t
无需触摸ji
。但是,我不想做ji
多余的。
解决方案
val ji = Array("134","231","2321")
- 好的,ji
是一个字符串数组。
var t = ji
——不需要这个。避免使用vars
var i = ji(1).take(2)
-- 也不需要这个
i = i + 8
- 避免可变性。此外,i
是 aString
并且8
是整数。不要这样做。
上面两行应该改写为
val i = ji(1).take(2) + "8"
t(1)= i
-- 您在这里更改数组元素(如所写,t
并且ji
是相同的数组)。不要这样做。
底线:
val ji = Array("134","231","2321")
val t = ji.updated(1, ji(1).take(2) + "8")
这可以满足您的要求:ji
并且t
是两个数组,它们的第二个元素不同。
推荐阅读
- android - chaquo pyException ModuleNotFoundError:没有名为“四元数”的模块
- android - 应用程序未打开或关闭时的后台服务
- wordpress - 为什么使用类和公共方法的操作不会触发 __construct()
- excel - 从列中的列表返回电子邮件地址
- c# - 在.net核心中获取日期内数据的Linq查询
- mysql - JSON响应上的日期时间更改
- r - 如何从闪亮的用户输入复选框创建反应性数据框和表
- android - Android Test Station 卡在排队状态
- javascript - 以功能方式生成倍数列表
- python - 错误:TypeError:ColumnClause 类型的对象不是 JSON 可序列化 Python3