【发布时间】:2012-06-04 13:34:03
【问题描述】:
我知道list 实际上包含值,sequence 是IEnumerable<T> 的别名。在实际的 F# 开发中,什么时候应该使用序列而不是列表?
以下是我可以看出何时序列会更好的一些原因:
- 在与其他需要的 .NET 语言或库交互时
IEnumerable<T>。 - 需要表示一个无限序列(在实践中可能并没有真正用处)。
- 需要惰性求值。
还有其他的吗?
【问题讨论】:
-
我发现无限序列非常有用和常见。例如,System.Random.Next() 已经是一个变相的“无限序列”。通常我想要一些能根据需要生成尽可能多的元素的东西。我最近在 F# 中编写了一个俄罗斯方块,并将块生成表示为一个无限序列:它将随着游戏的进行创建尽可能多的块。
-
@Dr_Asik 请注意,以这种方式生成的
seq会在您每次查看时产生不同的随机数。这显然可能是非确定性错误的来源......