我在Swift中的可变参数初始化程序出了什么问题?

时间:2016-02-08 10:47:57

标签: swift generics initializer variadic

我创建了一个带有初始化程序的类,它接受一个可变参数,但它没有做它应该做的事情。我创建了一个名为start的变量,它是对storted属性unteresElement的引用。但不知何故,它保持“零”,即使我为它分配不同的值。这是怎么回事?

class Element<T> {
    var content: T
    var next: Element<T>?

    init (_ content: T) {
        self.content = inhalt
    }
}

class LinkedList<T> {
    var lowestElement: Element<T>?

    var isEmpty: Bool {
        return lowestElement == nil
    }

    init (firstElement: T) {
        lowestElement = Element (firstElement)
    }

    init (_ elements: T...) {
        var start = lowestElement

        for element in elements {
            start = Element (element)
            start = start!.next
        }
    }
}

var list1 = LinkedList (5, 91, 20, 3, 60)

print ("\(liste1.lowestElement?.content)")

1 个答案:

答案 0 :(得分:0)

您的迭代中存在错误。您要将所有值分配给start,但永远不会存储start

设置lowestElement并保留指向当前Element的临时指针,以便您可以为next属性分配下一个当前Element

class Element<T> {

    var content: T
    var next: Element<T>?

    init (_ content: T) {
        self.content = content
    }

}

class LinkedList<T> {

    var lowestElement: Element<T>?

    var isEmpty: Bool {
        return lowestElement == nil
    }

    init (firstElement: T) {

        lowestElement = Element(firstElement)

    }

    init (_ elements: T...) {

        var current : Element<T>!

        for element in elements {

            if lowestElement == nil {
                lowestElement = Element(element)
                current = lowestElement!
            } else {
                let next = Element(element)
                current.next = next
                current = next
            }
        }
    }
}

var list1 = LinkedList (5, 91, 20, 3, 60)

print ("\(list1.lowestElement?.content)")