F# で LINQ 入門 ElementAt ElementAtOrDefault
なかなか .NET Framework 2.0 を抜け出せないまま、LINQ なんて使わないし覚えなくていいや……と思っていたらいつの間にか .NET Framework も 4.5 がリリースされようとしているではありませんか。最近はテストメソッドで LINQ を嗜んでいますが、相変わらずプロジェクトは .NET Framework 2.0 のまま。世の中の動きに置いてかれないよう、LINQ のおさらいをしておくことにしました。折角なので F# で。List モジュールがあるのに F# で。
open System.Linq (* 入部した順に並んでいるリスト。入部順はアニメ準拠 *) let mizusawa = ["Chihaya"; "Taichi"; "Kanade"; "Tsutomu"; "Nikuman"] (* n番目に入部した子を取得する *) let nthMember n = let n = n - 1 mizusawa.ElementAt n (* 肉まん君が表示される *) 5 |> nthMember |> printfn "%s" (* まだ入部していない子を表示しようとするとエラー 6 |> nthMember |> printfn "%s" *) (* エラーではなくデフォルト値が欲しいときは ElementAtOrDefault を使用する *) let nthMember' n = let n = n - 1 mizusawa.ElementAtOrDefault n 5 |> nthMember' |> printfn "%s" 6 |> nthMember' |> printfn "%s" (* null はいやん……option を使おう *) let nthMember'' n = let n = n - 1 match mizusawa.ElementAtOrDefault n with | null -> None | name -> Some(name) 5 |> nthMember'' |> printfn "%A" 6 |> nthMember'' |> printfn "%A"
ElementAt メソッドは単体で使う機会は少ないと思います。
LINQ のメソッドを適当に分けていたら 24 回分になってしまいましたが、流行の一人 Advent Calendar ではありません。明日は First と Last の予定。