gpt4 book ai didi

arrays - 将数组切片为 seq,不进行复制

转载 作者:行者123 更新时间:2023-12-01 00:43:20 25 4
gpt4 key购买 nike

我正在尝试将 Array 的一部分作为 Seq 来避免复制。我可以使用 toSeq 方法。

val array = Array[AnyRef](
new Integer(1),
new Integer(2),
new Integer(3),
new Integer(4),
new Integer(5)
)
val seq = array.toSeq
array(1) = null
println(seq.mkString(",")) //1,null,3,4,5

工作正常:Ideone Live example 。数组未被复制。但是当我尝试切片时

val array = Array[AnyRef](
new Integer(1),
new Integer(2),
new Integer(3),
new Integer(4),
new Integer(5)
)
val seq = array.toSeq.slice(0, 3)
array(1) = null
println(seq.mkString(",")) //1,2,3

可以看出,副本已制作:Ideone Live Example 。我正在努力避免它。 Scala 有办法做到这一点吗?

最佳答案

这是代码:

val a = (0 to 10).toArray
val b = a.toSeq.view.slice(1, 9)
a(5) = 12345
b.mkString(",") // res5: String = 1,2,3,4,12345,6,7,8

这是一个 quote from Jurassic Park :

"Your scientists were so preoccupied with whether or not they could that they didn't stop to think if they should."

关于arrays - 将数组切片为 seq,不进行复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56203052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com