//generic queue data object
class QNode<T> {
var key: T? = nil
var next: QNode? = nil
}
public class Queue<T> {
//Q1
private var top: QNode<T>! = QNode<T>()
//enqueue the specified object
func enQueue(var key: T) {
//check for the instance
if (top == nil) {
//Q2
top = QNode()
}
//establish the top node
if (top.key == nil) {
top.key = key
return
}
var childToUse: QNode<T> = QNode<T>()
var current: QNode = top
//cycle through the list of items to get to the end.
while (current.next != nil) {
current = current.next! }
//append a new item
childToUse.key = key
current.next = childToUse
}
}
Если сменить Q1 на частный var top: QNode! = QNode() будет вызывать ошибку «Аргумент для общего параметра« T »не может быть выведен», но в исходном коде Q2 работает нормально без ошибок?Возможно ли, что тип Swift является типичным?
Вы используете тип, чтобы продемонстрировать эту проблему? может быть любым типом? –
Примерами являются первые три строки извлеченного кода. Последние три относятся к вашему делу. Вы можете заменить String на T или действительно другим типом. – sketchyTech
Тип вывода трудно адаптировать, нет принципа, который позволит вам знать, когда это будет эффективно. –