从F#中的序列构造中调用函数

时间:2016-02-13 22:58:00

标签: f# sequence

我在序列构造中调用函数时遇到问题。 显然,这个函数被称为整个代码 不会产生预期的结果。这是代码:

get()

这里,mylist是一个记录列表。我打算用它来构建一个序列 从函数getStatus更新字段状态。它就是这么做的 不起作用,该函数似乎不会为每次迭代运行 按预期循环。

感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

序列很懒惰。在枚举序列之前,您的函数不会运行。

您需要将序列转换为具体的集合类型,如列表或数组(它将枚举序列并强制您的函数运行):

seq { for b in mylist do yield { b with status = getStatus b } }
|> Seq.toList

或者,如果您只关心副作用(不是您的情况),请使用Seq.iter