Fsharp sequence3 Fsharp sequence3 Fsharp sequence3
مثال هایی راجع به توالی در #F
مثال های زیر استفاده از برخی از ویژگی های توالی های دو جلسه قبل را نشان می دهد.
مثال
این برنامه یک دنباله خالی ایجاد می کند و بعد آن را پر می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | (* Creating sequences *) let emptySeq = Seq.empty let seq1 = Seq.singleton 20 printfn"The singleton sequence:" printfn "%A " seq1 printfn"The init sequence:" let seq2 = Seq.init 5 (fun n -> n * 3) Seq.iter (fun i -> printf "%d " i) seq2 printfn"" (* converting an array to sequence by using cast *) printfn"The array sequence 1:" let seq3 = [| 1 .. 10 |] :> seq<int> Seq.iter (fun i -> printf "%d " i) seq3 printfn"" (* converting an array to sequence by using Seq.ofArray *) printfn"The array sequence 2:" let seq4 = [| 2..2.. 20 |] |> Seq.ofArray Seq.iter (fun i -> printf "%d " i) seq4 printfn"" |
خروجی
1 2 3 4 5 6 7 8 | The singleton sequence: seq [20] The init sequence: 0 3 6 9 12 The array sequence 1: 1 2 3 4 5 6 7 8 9 10 The array sequence 2: 2 4 6 8 10 12 14 16 18 20 |
لطفا توجه داشته باشید که :
روش empty توالی خالی ایجاد می کند.
متد singleton یک توالی از یک عنصر مشخص را ایجاد می کند.
روش init توالی ایجاد می کند که عناصر با استفاده از یک تابع مشخص ایجاد می شوند.
روش ofArray و <Seq.ofList <T توالی ها را از آرایه ها و لیست ها ایجاد می کند.
روش iter اجازه می دهد تا از طریق دنباله ای تکرار شود.
در ادامه مثال های بیش تری راجع به توالی در زبان برنامه نویسی اف شارپ خواهیم داشت.
مثال
روش Seq.unfold یک توالی از یک تابع محاسبه ای ایجاد می کند، که یک وضعیت را دریافت می کند و آن را برای تولید هر عنصر بعدی در دنباله تبدیل می کند.
تابع زیر اولین عدد ۲۰ را تولید می کند.
1 2 3 4 | let seq1 = Seq.unfold (fun state -> if (state > 20) then None else Some(state, state + 1)) 0 printfn "The sequence seq1 contains numbers from 0 to 20." for x in seq1 do printf "%d " x printfn" " |
خروجی
1 2 | The sequence seq1 contains numbers from 0 to 20. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
مثال ۳
روش Seq.truncate در اف شارپ توالی را از یک توالی دیگر ایجاد می کند، اما توالی را به تعداد مشخصی از عناصر محدود می کند.
روش Seq.take یک توالی جدید ایجاد می کند که حاوی تعداد مشخصی از عناصر از آغاز یک توالی است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | let mySeq = seq { for i in 1 .. 10 -> 3*i } let truncatedSeq = Seq.truncate 5 mySeq let takeSeq = Seq.take 5 mySeq printfn"The original sequence" Seq.iter (fun i -> printf "%d " i) mySeq printfn"" printfn"The truncated sequence" Seq.iter (fun i -> printf "%d " i) truncatedSeq printfn"" printfn"The take sequence" Seq.iter (fun i -> printf "%d " i) takeSeq printfn"" |
خروجی
1 2 3 4 5 6 | The original sequence 3 6 9 12 15 18 21 24 27 30 The truncated sequence 3 6 9 12 15 The take sequence 3 6 9 12 15 |