错误: 无法使用 CountableRange 类型的索引为 Array 类型的值添加下标
我想从任何数组/序列中找到一些顶级元素。
extension Array {
func top(max:Int) -> Array {
guard self.count > max else {
return self
}
let last = max - 1
return self[0..<max]
}
}
最佳答案
此功能已存在于标准库中,形式为 Array.prefix(_:)
但是要解决此代码中的问题:
这里的错误实际上并不是您无法使用 CountableRange 类型的索引为 Array 类型的值添加下标
,而是您无法这样做来生成 类型的结果数组
。
用范围作为 Array
的下标会生成 ArraySlice
,而不是 Array
。因此,您的代码必须是:
extension Array {
func first(_ maxLength: Int) -> ArraySlice<Element> {
return self[0 ..< Swift.min(maxLength, self.count)]
}
}
关于arrays - 无法使用 CountableRange<Int> 类型的索引为 Array<Element> 类型的值添加下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041945/