微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift:删除LinkedList中的通用项目

如何解决Swift:删除LinkedList中的通用项目

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

我无法正常工作。当我尝试通过将Equatable添加到通用类NNode<T>来使NNode<T: Equatable>成为Equatable时,我的类型别名Node出现了一个不符合Equatable协议的错误。我该怎么办?

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
   }
}

解决方法

您还需要使T中的Equatable符合LinkedList

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

class LinkedList<T: Equatable> { 
    public typealias Node = NNode<T>
    ...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。