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>入力シーケンス。
例外
例外 |
状態 |
---|---|
入力シーケンスが 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