Swift:删除LinkedList中的常规项

Swift:删除LinkedList中的常规项,swift,generics,linked-list,Swift,Generics,Linked List,我正在尝试从链接列表中删除常规项。我遇到的问题是,当我检查head?时,value==value,它要求“T”符合equalable 我很难做到这一点。当我试图通过将equalable添加到我的泛型类NNode,使NNode可均衡时,我的typealias节点有一个不符合协议均衡的错误。我该怎么办 class NNode<T: Equatable> { var value: T var next: NNode? init(value: T, next: NN

我正在尝试从链接列表中删除常规项。我遇到的问题是,当我检查
head?时,value==value
,它要求“T”符合equalable

我很难做到这一点。当我试图通过将equalable添加到我的泛型类
NNode
,使
NNode
可均衡时,我的typealias
节点
有一个不符合协议均衡的错误。我该怎么办

class NNode<T: Equatable> {
    var value: T
    var next: NNode?

    init(value: T, next: NNode?) {
       self.value = value
       self.next = next
     }
  }

class LinkedList<T> {
public typealias Node = NNode<T>

func delete(value: T) {
    if head?.value == value {
        head = head?.next
    }

    var prev: Node?
    var current = head

    while current != nil && current?.value != value {
        prev = current
        current = current?.next
    }

    prev?.next = current?.next
   }
}
class NNode{
var值:T
下一个变量:NNode?
初始值(值:T,下一个值:NNode?){
自我价值=价值
self.next=下一个
}
}
类链接列表{
公共类型别名节点=NNode
func delete(值:T){
如果头?.value==值{
头=头?下一个
}
var-prev:节点?
无功电流=水头
当前时!=nil&¤t?.value!=value{
prev=当前
电流=电流?下一步
}
上一个?下一个=当前?下一个
}
}

您还需要将
T
链接列表中的
equalable
一致:

class NNode<T: Equatable> { ... }

class LinkedList<T: Equatable> { 
    public typealias Node = NNode<T>
    ...
}
class NNode{…}
类链接列表{
公共类型别名节点=NNode
...
}

非常感谢!我被困在这个问题上有一段时间了