gpt4 book ai didi

f# - 是否可以覆盖 Collections.Seq 模块中的值?

转载 作者:行者123 更新时间:2023-12-04 18:12:29 26 4
gpt4 key购买 nike

我已经为我构建的集合实现了 IEnumerable,并且(尽管我没有对它们全部进行测试)Seq 值似乎可以正常工作。当我的集合的值的 native 性能优于使用 Seq 的基于 IEnumerable 的函数时,是否可以覆盖某些 Seq 值,例如“last”?我还没有找到任何关于覆盖 Seq 的信息。

最佳答案

否——Seq 中的函数模块不能被覆盖。但是,其中一些确实尝试通过检查其输入值(您传递给它们的 seq<'T> 实例)来查看它是否是 IList<'T> 的实例来优化性能。或 'T[] ;如果是,这些函数将采用一些优化的代码路径。例如,如果您将数组 ( 'T[] ) 传递给 Seq.length ,它可以通过使用.Length快速确定长度数组的属性。

如果您坚持使用 Seq模块,我能想到的唯一性能优化是让你的集合也实现 ICollection<'T> 和/或 IList<'T> .这可能会优化某些情况,但不会是所有情况。

关于f# - 是否可以覆盖 Collections.Seq 模块中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12340277/

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