F# で LINQ 入門 First FirstOrDefault Last LastOrDefault
始まりは肝心ですし終わりが良くなければ失敗だと思います。SGです。インデクサに 0 や hogeList.Count - 1 なんて書いていませんか? 書いてますね、わたしです。
open System.Linq let firstKiss (taste : string[]) = taste.First() |> printfn "初めてのキスは%sの味がした" let lastKiss (taste : string[]) = taste.Last() |> printfn "最後のキスは%sの味だった……" (* 今回は配列 *) let taste = [|"涙"; "苺"; "毒"|] firstKiss taste lastKiss taste let empty = [||] (* シーケンスに要素がないためエラー firstKiss empty lastKiss empty *) let firstKiss' (taste : string[]) = let message (taste : string[]) = match taste.FirstOrDefault() with | null -> "キスもしたことがない童貞諸君乙であります" | aji -> sprintf "初めてのキスは%sの味がした" aji message taste |> printfn "%s" let lastKiss' (taste : string[]) = let message (taste : string[]) = match taste.LastOrDefault() with | null -> "お前はいままでにしたキスの数を覚えているのか?" | aji -> sprintf "最後のキスは%sの味だった……" aji message taste |> printfn "%s" let parameters = [| taste; empty; |] Array.iter firstKiss' parameters Array.iter lastKiss' parameters
実行結果
初めてのキスは涙の味がした 最後のキスは毒の味だった…… 初めてのキスは涙の味がした キスもしたことがない童貞諸君乙であります 最後のキスは毒の味だった…… お前はいままでにしたキスの数を覚えているのか? val firstKiss : string [] -> unit val lastKiss : string [] -> unit val taste : string [] = [|"涙"; "苺"; "毒"|] val empty : 'a [] val firstKiss' : string [] -> unit val lastKiss' : string [] -> unit val parameters : string [] [] = [|[|"涙"; "苺"; "毒"|]; [||]|]