gpt4 book ai didi

ios - 快速反向数组不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 07:06:12 24 4
gpt4 key购买 nike

我尝试制作反向数组,请考虑以下内容:

let arrValues : [MyStruct] = 
[MyStruct(key: "id-5"),
MyStruct(key: "id-10"),
MyStruct(key: "id-20")]

let reversedKeys = arrValues.map{$0.key ?? ""}.reversed()

它应该可以工作,但在日志中我看到键的顺序与我添加它们的顺序相同。

最佳答案

好吧,这是对 playground 的简单测试:

import UIKit

struct MyStruct {
var key: String?
}

let arrValues : [MyStruct] = [MyStruct(key: "id-5"), MyStruct(key: "id-10"), MyStruct(key: "id-20")]

let reversedKeys = arrValues.map{$0.key ?? ""}.reversed()
for key in reversedKeys {
debugPrint(key)
}

debugPrint 将正确显示:"id-20""id-10""id-5"

但是如果你停止执行并调试 reversedKeys 的内容,它将显示 id-5 id-10 id-20

有两个函数 reverse()reversed()

reversed() 实际上并没有对数组重新排序。它只返回一个对象(如迭代器),该对象从末尾到开头迭代元素。它的复杂度为 O(1)。

然而 reverse() 改变了元素的顺序,复杂度为 O(n)。但它必须是一个可变数组,因为它是一个可变函数,所以按照这个例子,你需要做这样的事情:

var mutableCopy = arrValues
mutableCopy.reverse()
let reverseKeys = mutableCopy.map{$0.key ?? ""}
for key in reverseKeys {
debugPrint(key)
}

如果您只需要使用 reversed() 来迭代键,但是如果您必须访问带有下标的键,例如 reverseKeys[2],那么您应该使用 reverse()

关于ios - 快速反向数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47888298/

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