f# - seq.nth 和 seq.item 有什么区别?

标签 f#

查看 Seq.nth 的 MSDN 文档和 Seq.item , 他们似乎在做完全相同的事情。两者具有相同的描述...计算集合中的第 n 个元素

有什么区别?如果没有,为什么两者都有?

最佳答案

nth 被弃用的原因是Seq.nthList.nth 的类型签名不同,so nth was deprecated in favor of item以免混淆。 (在该文档中搜索单词“nth”以查找讨论)。在某些时候显然还有一个 Array.nth 函数,但它不再出现在 MSDN 上的 F# 文档中,所以我无法告诉您它的签名是什么。

Signature for Seq.nth :

Seq.nth : int -> seq<'T> -> 'T

Signature for List.nth :

List.nth : 'T list -> int -> 'T

注意List.nth的定义方式,不能做someList |> List.nth 5Seq.nth 以正确的顺序获取其参数,因此 someSeq |> Seq.nth 5 是可能的,但是让这两个函数以不同的顺序获取它们的参数会导致困惑。为避免这种混淆,nth 已被弃用并替换为 item,后者对列表、seq 和数组具有相同的签名。 (是的,someArray |> Array.item 5 是可能的,即使您通常只是将其写为 someArray.[5])。

关于f# - seq.nth 和 seq.item 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49888156/

相关文章:

f# - 通过任务选择在目标中生成的 ItemGroup 文件的位置

asynchronous - F# 异步文件复制

f# - 如何在 F# 中动态取消装箱值?

F# [<Literal>] 导致程序无效

f# - 混淆元编程中的 F# 引用和模式匹配

f# - 灵活的类型和通用参数

multithreading - F# 异步任务取消,无需 token

f# - 在 akka.net actor{} 表达式中等待 F# 异步任务

random - F# 中的闭包和随机数

inheritance - 在 F# 中调用基类显式接口(interface)方法