我想正确地制作此Stack结构。

如何定义“ topItem”?

在“ newstack”上方显示是否正确?

    struct Stack {
    var Items:[String] = []



    mutating func push (item:String){
        Items += [item]
    }

    mutating func pop() -> String {
        return Items.removeLast()
    }

    var topItem =`enter code here`

    }

var newStack = Stack()

newStack.push("HistoryListController")
newStack.push("HistoryDetailViewController")
newStack.push("HistoryTimelineViewController")
newStack.push("HistoryChartViewController")

newStack.Items


if let topVC = newStack.topItem {
    print("Top View Controller is \(topVC)")
    //HistoryChartViewController
}

newStack.pop()

if let topVC = newStack.topItem {
    print("Top View Controller is \(topVC)")
    //HistoryTimelineViewController
}


我是Swift的初学者。
这是我的第一个代码

最佳答案

首先,items应该为小写。其次,不清楚您要topItem返回什么。如果您想要最新的对象,则可以这样实现:

struct Stack {
    var items = [String]()

    mutating func push (item:String){
        items += [item]
    }

    mutating func pop() -> String {
        let result = items[0]
        items.removeLast()
        return result
    }

    var topItem : String? {
        return items.last
    }

}

var newStack = Stack()

newStack.push("HistoryListController")
newStack.push("HistoryDetailViewController")
newStack.push("HistoryTimelineViewController")
newStack.push("HistoryChartViewController")

newStack.topItem // "HistoryChartViewController"

newStack.items


如果需要第一个对象,请将其更改为return items.first

10-08 19:52