我在从序列构造中调用函数时遇到问题。 显然,这个函数被懒惰地调用,以至于整个代码 不会产生预期的结果。这是代码:
mylist
|> fun myseq ->
seq { for b in mylist do yield { b with status = (getStatus b)}}
这里,mylist 是一个记录列表。我打算用它构建一个序列 从函数 getStatus 更新字段状态。它只是做 不起作用,该函数似乎不会针对 for 循环符合预期。
感谢任何帮助。
最佳答案
序列是惰性的。在枚举序列之前,您的函数不会运行。
您需要将序列转换为具体的集合类型,例如列表或数组(这将枚举序列并强制您的函数运行):
seq { for b in mylist do yield { b with status = getStatus b } }
|> Seq.toList
或者,如果您只关心副作用(这不是您的情况),请使用 Seq.iter
。
关于f# - 从 F# 中的序列构造中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386334/