2015-07-13 89 views
0

這工作階擴展堆棧不起作用

class Deck { 
    var cards : Stack[Card] = new Stack[Card] 
    for (card <- Card.possibleCards.keySet; suit <- Card.suits) { 
    cards.push(new Card(card, suit)) 
    } 
} 

但這並不

class Deck[Card] extends Stack[Card] { 
    for (card <- Card.possibleCards.keySet; suit <- Card.suits) { 
    push(new Card(card, suit)) 
    } 
} 

我得到這個錯誤:

error: class type required but Card found 

有人能告訴我爲什麼嗎?

+1

適合我。你對「Stack」的定義是什麼?然而,這不是你的意思 - 在yuor代碼中的卡片只是一個類型參數(例如,它可以被稱爲任何東西 - 例如T)。它會隱藏你的代碼中定義的任何其他卡。我認爲你的意思是'class Deck extends Stack [Card]' –

+0

import scala.collection.mutable.Stack – TheJKFever

+0

仍然適用於我。但看到我的其他評論,這幾乎肯定不是你的意思。此外,卡的定義是需要一個完整的可重複的例子 –

回答

0

這只是一個語法錯誤,我需要從Deck中刪除類聲明卡。 像這樣

class Deck extends Stack[Card] { 
    for (card <- Card.possibleCards.keySet; suit <- Card.suits) { 
    push(new Card(card, suit)) 
    } 
}