如何解决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 举报,一经查实,本站将立刻删除。