gpt4 book ai didi

arrays - 将 RandomAccessSlice 转换为 RandomAccessCollection

转载 作者:可可西里 更新时间:2023-11-01 02:01:12 24 4
gpt4 key购买 nike

当我们尝试从 Array 中检索一系列元素时,我们会返回一个 ArraySlice:

let array = [1, 3, 5, 2]
let arraySlice = array[..<2] // elements up to index 1 == [1, 3]

我们可以像这样将它转换回 Array 类型:

let arrayFromSlice = Array(arraySlice)

假设您要创建一个返回任何 RandomAccessCollection 的前 3 个元素的方法:

func first3Elements<T: RandomAccessCollection>(_ c: T) -> T {
let slice = c.prefix(3)

// COMPILER ERROR: non-nominal type 'T'
// does not support explicit initialization
return T(slice)
}

是否可以执行此转换?

最佳答案

这是我第一次尝试使用类型删除,但我想还有更好的解决方案。

func first3Elements<T>(_ c: AnyRandomAccessCollection<T>) -> AnyRandomAccessCollection<T> {
let slice = c.prefix(3)
return AnyRandomAccessCollection(slice)
}

let array = AnyRandomAccessCollection([1, 2, 3, 4])
let result = first3Elements(array)

for x in result {
print(x)
}

关于arrays - 将 RandomAccessSlice 转换为 RandomAccessCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46233398/

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