gpt4 book ai didi

下标中带有范围的 Swift 数组切片

转载 作者:IT王子 更新时间:2023-10-29 05:41:35 25 4
gpt4 key购买 nike

这是怎么回事?

var foo: [UInt8] = [1,2,3,4]
var bar: [UInt8] = foo[1...2] // 'Range<Pos>' is not convertible to 'Int'

但这编译得很好:

var foo: [UInt8] = [1,2,3,4]
var bar = foo[1...2]

文档仅在替换方面明确提及这一点:

shoppingList[4...6] = ["Bananas", "Apples"]

那么 Array[Range] 究竟返回了什么?在两个数组索引之间获取对象的最简单方法是什么?

最佳答案

struct Array声明 subscript (subRange: Range<Int>) -> Slice<T> .因此,bar的类型应该是 Slice<UInt8> , 不是 [UInt8] . Slice符合与 Array 相同的协议(protocol), 所以你的代码的其余部分不需要改变,你可以选择不使用类型注释。 (或者,如果您确实需要,可以使用 Array(foo[1...2]) 将其转换为数组。)

关于下标中带有范围的 Swift 数组切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109161/

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