【问题标题】:What is going wrong with my variadic initializer in Swift?我在 Swift 中的可变参数初始化程序出了什么问题?
【发布时间】:2016-05-18 00:05:28
【问题描述】:

我创建了一个带有初始化程序的类,该初始化程序采用可变参数,但它没有做它应该做的事情。我创建了一个名为 start 的变量,它是对存储属性 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)")

【问题讨论】:

    标签: swift generics initializer variadic


    【解决方案1】:

    您的迭代中有一个错误。您将所有值分配给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)")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      相关资源
      最近更新 更多