如何使用Equatable创建扩展来删除自定义数组元素?
问题描述:
我已经创建了自定义数组类型。现在我想在其中添加一个方法,它可以通过传递实际元素作为参数来移除数组的元素。 我知道这可以通过将自定义数组的扩展名添加为Equitable来实现。如何使用Equatable创建扩展来删除自定义数组元素?
下面是我的代理服务器阵列的代码:
struct ArrayProxy<T> {
var array: [T] = []
mutating func append(newElement: T) {
self.array.append(newElement)
print("Element added in download queue")
DownloadContent.downloadChaptersFromDownloadQueue()
}
mutating func removeAtIndex(index: Int) {
print("Removed object \(self.array[index]) at index \(index)")
self.array.remove(at: index)
}
subscript(index: Int) -> T {
set {
print("Set object from \(self.array[index]) to \(newValue) at index \(index)")
self.array[index] = newValue
}
get {
return self.array[index]
}
}
}
下面是我的代理服务器阵列
extension ArrayProxy where T: Equatable {
mutating func removeElement(element: T) {
self.removeAtIndex(index: self.array.index(of: element)!)
}
}
答
力的延伸解开一个可选的值可能会导致错误。
如果索引存在index(of:)
只返回第一个匹配索引。
修复:
什么是你的问题? – Sweeper
我已更新问题 –
其实,removeElemetat不可访问。而且我也怀疑我是否正确或错误? –