我试图得到的片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
Run Code Online (Sandbox Code Playgroud)
它工作正常:Ideone Live示例。数组未复制。但是当我尝试切成薄片时
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
Run Code Online (Sandbox Code Playgroud)
可以看到复制了: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
Run Code Online (Sandbox Code Playgroud)
“您的科学家对他们是否能做得如此着迷,以至于他们不停地思考是否应该这样做。”