微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scala List take() 方法如何更改 val 类型?

如何解决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 -- 您正在此处更改数组元素(如所写,tji相同的数组)。不要这样做。

底线:

   val ji = Array("134","2321")
   val t = ji.updated(1,ji(1).take(2) + "8")

这就是你想要的:jit 是两个数组,它们的第二个元素不同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。