如何使用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)!) 
} 
} 
+1

什么是你的问题? – Sweeper

+0

我已更新问题 –

+0

其实,removeElemetat不可访问。而且我也怀疑我是否正确或错误? –

力的延伸解开一个可选的值可能会导致错误。

如果索引存在index(of:)只返回第一个匹配索引。

修复:

​​