수색…
시퀀스 생성
시퀀스를 만드는 방법에는 여러 가지가 있습니다.
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>
. 이것은 a 유형의 주어진 입력에 대해 참 또는 거짓 (때로는 술어라고 함)을 리턴하는 함수를 승인한다는 것을 나타냅니다. 유형 'a
값을 포함하는 시퀀스는 유형 '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