如何解决Scala List take() 方法如何更改 val 类型?
我刚刚在字符串中使用 take()
方法发现了一个奇怪的行为。
这是我的代码:
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,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
是一个 String
,而 8
是一个整数。不要这样做。
上面两行应该改写为
val i = ji(1).take(2) + "8"
t(1)= i
-- 您正在此处更改数组元素(如所写,t
和 ji
是相同的数组)。不要这样做。
底线:
val ji = Array("134","2321")
val t = ji.updated(1,ji(1).take(2) + "8")
这就是你想要的:ji
和 t
是两个数组,它们的第二个元素不同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。