我想做一个扩展集合的第一个项目与此代码:
extension Collection {
var firstOneExist: Bool {
if self.indices.contains(0) {
return true
}
else {
return false
}
}
}
我得到了Cannot convert value of type 'Int' to expected argument type 'Self.Index'
的错误,为什么我得到这个错误?索引是Int,所以我使用了0,错误告诉我使用as! Self.Index
,但我不知道原因。
2条答案
按热度按时间mqxuamgl1#
可以将computed属性限制为仅可用于索引为整数的集合
示例
tp5buhyn2#
Collection
上的索引没有定义为Int
。它是一个名为Index
的关联类型。它可能是Int
,但你不能在这里只使用Int
。例如,
Dictionary
符合Collection
,但它的Index
是任何Hashable
类型。因此可能是String
等...另外...在
Int
的情况下,第一个索引不一定是0
。例如,数组切片不一定有0
作为第一个索引。要获取集合的第一个索引,可以使用
self.startIndex
。不过,按照你的逻辑我觉得你需要的是...
它已经存在于
Collection
上,和你的函数做的一样。只要在它的前面贴一个!
来否定布尔值。