答案 0 :(得分:4)
不推荐使用nth
的原因是Seq.nth
和List.nth
的类型签名不同,so nth
was deprecated in favor of item
以避免混淆。 (在该文档中搜索单词“nth”以查找讨论)。在某些时候显然还有一个Array.nth
函数,但它不再出现在MSDN上的F#文档中,所以我无法告诉你它的签名是什么。
Seq.nth : int -> seq<'T> -> 'T
List.nth : 'T list -> int -> 'T
请注意List.nth
的定义方式,您无法someList |> List.nth 5
。 Seq.nth
以正确的顺序获取其参数,以便someSeq |> Seq.nth 5
成为可能,但是让这两个函数以不同的顺序获取其参数会导致混淆。为了避免这种混淆,nth
被弃用,并被item
取代,someArray |> Array.item 5
具有相同的列表,序列和数组签名。 (是的,someArray.[5]
是可能的,即使您通常只是将其写为 headPort[i] = new MyList(i, nullptr)[cap]; // initialize all airports from newport[0] to newport[9]
)。
答案 1 :(得分:3)
您可以在此处查看这些功能的源代码:https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/seq.fs
[<CompiledName("Get")>]
let nth index (source : seq<'T>) = item index source
所以他们是一样的。