Seq.initInfinite<'T> 函数 (F#)

生成一个新序列,当进行迭代时,该序列将通过调用给定函数来返回连续的元素。

命名空间/模块路径: Microsoft.FSharp.Collections.Seq

程序集:FSharp.Core(在 FSharp.Core.dll 中)

// Signature:
Seq.initInfinite : (int -> 'T) -> seq<'T>

// Usage:
Seq.initInfinite initializer

参数

  • initializer
    类型:int -> 'T

    在序列中从给定索引处开始生成项的函数。

返回值

结果序列。

备注

将不会保存调用函数的结果,也就是说,将根据需要重新应用函数以重新生成元素。 将向函数传递所生成项的索引。

迭代可继续进行,最大可达到 Int32.MaxValue。

此函数在编译的程序集中名为 InitializeInfinite。 如果从 F# 以外的语言中访问函数,或通过反射访问成员,请使用此名称。

线程安全

返回的序列可在线程间安全地传递。 但是,不应以并发方式访问从返回的序列中生成的单个 IEnumerator 值。

示例

以下示例演示如何使用 Seq.initInfinite 来创建符号交替的序列 1/n^2。

let seqInfinite = Seq.initInfinite (fun index ->
    let n = float( index + 1 )
    1.0 / (n * n * (if ((index + 1) % 2 = 0) then 1.0 else -1.0)))
printfn "%A" seqInfinite
  

平台

Windows 8,Windows 7,Windows server 2012中,Windows server 2008 R2

版本信息

F#核心库版本

支持:2.0,4.0,可移植

请参见

参考

Collections.Seq 模块 (F#)

Microsoft.FSharp.Collections 命名空间 (F#)