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)
中,项的类型必须符合可平等性