我正在努力破译这个错误意味着什么:
无法确定方法'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
答案 0 :(得分:3)
您的代码现在的样子,Card list
是函数的结果,而不是在参数上键入注释。这就是为什么它可能会寻找一个返回Card list
而不是Stack
的堆栈构造函数。
试试这个:
let prepareDeck (deck: Card list) =
let stack = System.Collections.Generic.Stack<Card>(deck)
stack