Arrays 使用数组类的索引方法时出错

Arrays 使用数组类的索引方法时出错,arrays,swift,Arrays,Swift,我创建了一个自定义类MyArray,用于练习和学习。我在该类和内部数组中创建了一些方法。在类内部定义的内部数组上使用index(of:)方法时,我遇到了一个错误。我的班级代码如下: public class MyArray<Element> { private var factorialNumber: Double = 0 private var arr: [Element] = [] internal var instance: MyArray?

我创建了一个自定义类
MyArray
,用于练习和学习。我在该类和内部数组中创建了一些方法。在类内部定义的内部数组上使用
index(of:)
方法时,我遇到了一个错误。我的班级代码如下:

public class MyArray<Element> {
    private var factorialNumber: Double = 0
    private var arr: [Element] = []
    internal var instance: MyArray?

    private init() {}
    public func removeElement(_ item: Element) -> [Element] {
        var found = true
        while found {
            if arr.contains(item) { // ERROR: Missing argument label '"where:" in call
                let index = arr.index(of: item) // Error: cannot invoke index with an argument list of type (of: Element)
                arr.remove(at: index!)
            } else {
                found = false
            }
        }
        return arr
    }

    public func removeFirstOccurance(of value: Element) -> [Element] {
        let index : Int = arr.index(of: value)

        arr.remove(at: index!) // ERROR: Cannot force wrap value of non optional type Int
        return arr
    }
}
公共类MyArray{
私有变量factorialNumber:Double=0
私有变量arr:[元素]=[]
内部变量实例:MyArray?
私有init(){}
公共函数删除元素(uItem:Element)->[元素]{
找到的变量=真
发现时{
如果arr.contains(item){//错误:调用中缺少参数标签“where:”
let index=arr.index(of:item)//错误:无法使用类型为(of:Element)的参数列表调用索引
arr.remove(位于:索引!)
}否则{
发现=错误
}
}
返回arr
}
public func removeFirstOccurance(值:Element)->[Element]{
let index:Int=arr.index(of:value)
arr.remove(at:index!)//错误:无法强制包装非可选类型Int的值
返回arr
}
}

错误的原因是
元素
不符合
equalable
。嗨,瓦丁,谢谢你的回复。但我无法理解内部数组“arr”是否符合equalable协议,它的方法索引(of:)是否具有类型为“Element”的参数。我只是在自定义类中使用实际数组。在这种情况下它不应该工作吗!!在API
索引(of:item)
中,项的类型必须符合
可平等性