无法使用列表

时间:2015-12-03 14:16:20

标签: f#

我正在努力破译这个错误意味着什么:

  

无法确定方法'Stack`1'的唯一重载   关于此计划点之前的类型信息。类型注释可以   被需要。候选人:System.Collections.Generic.Stack(capacity:int)   :unit,System.Collections.Generic.Stack(collection:   System.Collections.Generic.IEnumerable):unit

尝试编写此代码时会发生此错误:

let prepareDeck deck: Card list =
    let stack = System.Collections.Generic.Stack<Card>(deck)
    stack

我认为列表的类型为IEnumerable。 因此,我想我可以将列表放在Stack构造函数中。

我错过了什么?

以下是代码的其余部分:

type Suit = | Spades
            | Clubs
            | Diamonds
            | Hearts

type Face = | Two | Three | Four | Five 
            | Six | Seven | Eight | Nine | Ten
            | Jack | Queen | King | Ace

type Card = {Face:Face; Suit:Suit}

let private suits = [Spades; Clubs; Diamonds ; Hearts]
let private faces = [Two; Three; Four; Five; Six; Seven; Eight; Nine; Ten;
             Jack; Queen; King; Ace]

let deck = [for suit in suits do
            for face in faces do
                yield {Face=face; Suit=suit}]


let prepareDeck deck: Card list =
    let stack = System.Collections.Generic.Stack<Card>(deck)
    stack

1 个答案:

答案 0 :(得分:3)

您的代码现在的样子,Card list是函数的结果,而不是在参数上键入注释。这就是为什么它可能会寻找一个返回Card list而不是Stack的堆栈构造函数。

试试这个:

let prepareDeck (deck: Card list) =
    let stack = System.Collections.Generic.Stack<Card>(deck)
    stack
相关问题