SG

F# で LINQ 入門 Take TakeWhile

 Take はシーケンスの頭から指定した要素数のデータを取得します。

open System.Linq

let age = seq { 10..50 }

// なんとかきゅーぶ
age.Take(3)
|> Seq.iter (printfn "%d歳は小学生です。まったく、小学生は最高だぜ!")

// 刺されるのではないか
age.TakeWhile(fun a -> a < 24)
|> Seq.iter (printfn "%d日は通常の値段でケーキを販売しています。")

// Take と合わせて間を取得する
let jk = age.SkipWhile(fun a -> a < 16).TakeWhile(fun a -> a <= 18)
jk |> Seq.iter (printfn "マックで%d歳の女子高生がF#以下略")

 実行結果

10歳は小学生です。まったく、小学生は最高だぜ!
11歳は小学生です。まったく、小学生は最高だぜ!
12歳は小学生です。まったく、小学生は最高だぜ!
10日は通常の値段でケーキを販売しています。
11日は通常の値段でケーキを販売しています。
12日は通常の値段でケーキを販売しています。
13日は通常の値段でケーキを販売しています。
14日は通常の値段でケーキを販売しています。
15日は通常の値段でケーキを販売しています。
16日は通常の値段でケーキを販売しています。
17日は通常の値段でケーキを販売しています。
18日は通常の値段でケーキを販売しています。
19日は通常の値段でケーキを販売しています。
20日は通常の値段でケーキを販売しています。
21日は通常の値段でケーキを販売しています。
22日は通常の値段でケーキを販売しています。
23日は通常の値段でケーキを販売しています。
マックで16歳の女子高生がF#以下略
マックで17歳の女子高生がF#以下略
マックで18歳の女子高生がF#以下略

val age : seq<int>
val jk : seq<int>

 シーケンスの要素数を超える数を指定するとどうなるのっと

// 要素数をこえる場合
jk.Take(10)

 実行結果

val it : seq<int> = seq [16; 17; 18]