错误: 无法下标类型为Array的值,其索引类型为CountableRange
我想找一些来自任何数组/序列的顶级元素。
extension Array {
func top(max:Int) -> Array {
guard self.count > max else {
return self
}
let last = max - 1
return self[0..<max]
}
}
答案 0 :(得分:0)
此功能已存在于标准库中,格式为Array.prefix(_:)
但要解决此代码中的问题:
此处的错误实际上并不是您不能subscript a value of type Array with index of type CountableRange
,而是您无法生成Array
类型的结果。
按范围订阅Array
会产生ArraySlice
,而非Array
。因此,您的代码必须是:
extension Array {
func first(_ maxLength: Int) -> ArraySlice<Element> {
return self[0 ..< Swift.min(maxLength, self.count)]
}
}
答案 1 :(得分:0)
感谢@Leo和@Alexander的快速回复:)
extension Array {
func first(max: Int) -> Array {
return Array(prefix(max))
}
}