gpt4 book ai didi

list - 何时在 F# 中使用序列而不是列表?

转载 作者:行者123 更新时间:2023-12-03 05:19:22 26 4
gpt4 key购买 nike

据我了解,list实际上包含值,并且 sequenceIEnumerable<T> 的别名。在实际的 F# 开发中,什么时候应该使用序列而不是列表?

以下是我认为序列何时更好的一些原因:

  • 与其他需要的 .NET 语言或库交互时 IEnumerable<T>
  • 需要表示一个无限序列(在实践中可能不太有用)。
  • 需要惰性评估。

还有其他吗?

最佳答案

我认为您关于何时选择Seq的总结非常好。以下是一些补充要点:

  • 编写函数时默认使用 Seq,因为这样它们就可以与任何 .NET 集合一起使用
  • 如果您需要 Seq.windowedSeq.pairwise 等高级函数,请使用 Seq

我认为默认选择Seq是最好的选择,那么什么时候我会选择不同的类型?

  • 当您需要使用 head::tail 模式进行递归处理时,请使用 List
    (实现一些标准库中没有的功能)

  • 当您需要一个可以逐步构建的简单的不可变数据结构时,请使用List
    (例如,如果您需要在一个线程上处理列表 - 以显示一些统计信息 - 当您从网络服务接收更多值时,同时继续在另一个线程上构建列表)

  • 在处理短列表时使用List - 如果值经常表示空列表,则列表是最好的数据结构,因为它非常在这种情况下高效

  • 当您需要大量值类型集合时,请使用Array
    (数组将数据存储在平面内存块中,因此在这种情况下它们的内存效率更高)

  • 当您需要随机访问或更高性能(和缓存局部性)时,请使用数组

关于list - 何时在 F# 中使用序列而不是列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10814203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com