gpt4 book ai didi

arrays - 为什么直接在 ArraySlice 上调用变异方法不会触发写时复制?

转载 作者:行者123 更新时间:2023-11-30 10:33:36 25 4
gpt4 key购买 nike

为什么直接在 ArraySlice 上调用变异方法不会触发写时复制?唯一的区别是将切片分配给变量,对吗?

我的示例代码:

var numbers = [15, 40, 10, 30, 60, 25, 5, 100]
numbers[0..<4].sort()
numbers
// [10, 15, 30, 40, 60, 25, 5, 100]
<小时/>
var n = numbers[4..<8]
n.sort()
numbers
// [10, 15, 30, 40, 60, 25, 5, 100]

最佳答案

在您的代码中,您写道:

var numbers = [15, 40, 10, 30, 60, 25, 5, 100]
numbers[0..<4].sort()
numbers
// [10, 15, 30, 40, 60, 25, 5, 100]

在这种情况下,您直接对数组的子集进行操作。对数组的前 4 个元素([0] 到 [3])进行排序(就地)。然后,当您输出 numbers 时,您会看到前 4 个元素按排序顺序排列。

var n = numbers[4..<8]
n.sort()
numbers
// [10, 15, 30, 40, 60, 25, 5, 100]

然后,您数组的下 4 个元素([4] 到 [7])复制到变量 n 中。然后你排序()n。请注意,numbers 未受影响。

为什么你期待会发生不同的事情?

关于arrays - 为什么直接在 ArraySlice 上调用变异方法不会触发写时复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58567894/

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