2015-10-22 61 views
0

我想使這個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中很初學。 這是我的第一個代碼

回答

0

首先,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

+0

另外,我不確定'pop()'做了我所期望的 - 它總是返回第一個對象,並刪除最後一個。通常,一個'pop()'方法會返回最後一個對象,並將其刪除。 –

+0

和我換 [讓結果=項目[0] items.removeLast() 返回結果] 返回[items.removeLast()] –

+0

@SnowcatJung好像你可以只使用一個字符串數組,你並不需要你自己的'Stack'結構 –