Seq.readonly<'T> 函数 (F#)
创建委托给给定序列对象的新序列对象。 这样可确保无法通过类型转换来重新发现和改变原始序列。 例如,如果提供了数组,则返回的序列将返回数组的元素,但无法将所返回的序列对象强制转换为数组。
命名空间/模块路径: Microsoft.FSharp.Collections.Seq
程序集:FSharp.Core(在 FSharp.Core.dll 中)
// Signature:
Seq.readonly : seq<'T> -> seq<'T>
// Usage:
Seq.readonly source
参数
source
类型:seq<'T>输入序列。
异常
异常 |
Condition |
---|---|
在输入序列为 null 时引发。 |
返回值
结果序列。
备注
此函数在编译的程序集中名为 ReadOnly。 如果从 F# 以外的语言中访问函数,或通过反射访问成员,请使用此名称。
示例
以下代码用 Seq.readonly 来创建可变数组的不变视图。
type ArrayContainer(start, finish) =
let internalArray = [| start .. finish |]
member this.RangeSeq = Seq.readonly internalArray
member this.RangeArray = internalArray
let newArray = new ArrayContainer(1, 10)
let rangeSeq = newArray.RangeSeq
let rangeArray = newArray.RangeArray
// These lines produce an error:
//let myArray = rangeSeq :> int array
//myArray.[0] <- 0
// The following line does not produce an error.
// It does not preserve encapsulation.
rangeArray.[0] <- 0
平台
Windows 8,Windows 7,Windows server 2012中,Windows server 2008 R2
版本信息
F#核心库版本
支持:2.0,4.0,可移植