gpt4 book ai didi

swift - 无法将类型 Node 的值分配给类型 Node<_>?

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:06 27 4
gpt4 key购买 nike

Xcode 提示它“无法将 Node 类型的值分配给 Node<_> 类型?”在第 23、24、26、27 行(在 enqueue 的条件部分中将“node”分配给“top”和“bottom”)。我不确定这意味着什么,以及为什么 Xcode 会看到节点类型和顶部/底部的差异

class Node<T> {
var key: T?
weak var next: Node<T>?
weak var previous: Node<T>?

init(key: T, previous: Node? = nil) {
self.key = key
self.previous = previous
}
}


class Dequeue<T> {
private var count: Int = 0
private weak var top: Node<T>?
private weak var bottom: Node<T>?

func enqueue<T>(val: T) {
// if dequeue is empty
let node = Node<T>(key: val)

if top == nil {
self.top = node
self.bottom = node
} else {
self.bottom?.next = node
self.bottom = node
}
}

}

最佳答案

删除通用 <T>来自方法声明。

class Dequeue<T> {
...

func enqueue(val: T) {
...
}
}

<T>在类声明中适用于整个类,包括方法体。明确的 <T>在方法主体上引入了一个 泛型类型 T隐藏类(class)的T类型;因为它独立于全局T ,编译器无法确保它们兼容。

关于swift - 无法将类型 Node<T> 的值分配给类型 Node<_>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com