サーチ…


シーケンスを生成する

シーケンスを作成するには複数の方法があります。

Seqモジュールの関数を使用することができます:

// Create an empty generic sequence
let emptySeq = Seq.empty 

// Create an empty int sequence
let emptyIntSeq = Seq.empty<int> 

// Create a sequence with one element    
let singletonSeq = Seq.singleton 10 

// Create a sequence of n elements with the specified init function
let initSeq = Seq.init 10 (fun c -> c * 2) 

// Combine two sequence to create a new one
let combinedSeq = emptySeq |> Seq.append singletonSeq

// Create an infinite sequence using unfold with generator based on state
let naturals = Seq.unfold (fun state -> Some(state, state + 1)) 0

シーケンス式を使用することもできます。

// Create a sequence with element from 0 to 10
let intSeq = seq { 0..10 }

// Create a sequence with an increment of 5 from 0 to 50
let intIncrementSeq = seq{ 0..5..50 }

// Create a sequence of strings, yield allow to define each element of the sequence
let stringSeq = seq {
    yield "Hello"
    yield "World"
}

// Create a sequence from multiple sequence, yield! allow to flatten sequences
let flattenSeq = seq {
    yield! seq { 0..10 }
    yield! seq { 11..20 }
}

シーケンスの紹介

シーケンスとは、列挙できる一連の要素です。これはSystem.Collections.Generic.IEnumerableとlazyのエイリアスです。同じタイプの一連の要素を格納します(任意の値またはオブジェクト、さらには別のシーケンスでも可能です)。 Seq.moduleの関数は、Seq.moduleを操作するために使用できます。

シーケンス列挙の簡単な例を次に示します。

let mySeq = { 0..20 } // Create a sequence of int from 0 to 20
mySeq
|> Seq.iter (printf "%i ") // Enumerate each element of the sequence and print it

出力:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Seq.map

let seq = seq {0..10}

s |> Seq.map (fun x -> x * 2)

> val it : seq<int> = seq [2; 4; 6; 8; ...]

Seq.mapを使用してシーケンスのすべての要素に関数を適用する

Seq.filter

一連の整数があり、偶数の整数だけを含むシーケンスを作成したいとします。後者は、Seqモジュールのfilter関数を使用して取得できます。 filter関数は型シグニチャ('a -> bool) -> seq<'a> -> seq<'a> 。これはタイプの指定された入力にtrueまたはfalseを返す関数(時々述語と呼ばれる)を受け入れることを示す'aとタイプの値を含む配列'a型の値含むシーケンス得'a

// Function that tests if an integer is even
let isEven x = (x % 2) = 0

// Generates an infinite sequence that contains the natural numbers
let naturals = Seq.unfold (fun state -> Some(state, state + 1)) 0
 
// Can be used to filter the naturals sequence to get only the even numbers
let evens = Seq.filter isEven naturals 

無限反復配列

let data = [1; 2; 3; 4; 5;]
let repeating = seq {while true do yield! data}

繰り返しシーケンスは、 seq {}計算式を使用して作成できます



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow