खोज…
क्रम उत्पन्न करें
अनुक्रम बनाने के कई तरीके हैं।
आप 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 और आलसी का एक उपनाम है। यह एक ही प्रकार के तत्वों की एक श्रृंखला को संग्रहीत करता है (किसी भी मूल्य या वस्तु, यहां तक कि एक और अनुक्रम भी हो सकता है)। इस पर काम करने के लिए 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
।
// 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 {}
संगणना अभिव्यक्ति का उपयोग करके बनाया जा सकता है