【发布时间】:2015-12-03 22:21:24
【问题描述】:
我正在努力解读此错误的含义:
无法确定方法“Stack`1”的唯一重载 在此程序点之前的类型信息。类型注释可以 被需要。候选人:System.Collections.Generic.Stack(容量:int) :单元,System.Collections.Generic.Stack(集合: System.Collections.Generic.IEnumerable) : 单位
尝试编写此代码时出现此错误:
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
【问题讨论】:
-
既然你好像在学F#,看看能不能避免使用
Stack<T>,这是一个可变类型。默认的 F#list已经为您提供了类似堆栈的功能,因为您可以将新的头添加到列表中,并且可以读取列表的头。 -
好的。感谢您的指导,尽管当我尝试转向这种思维方法时,我的头骨很痛。
标签: f#