SG

F# で LINQ 入門 Single SingleOrDefault

 職場でシングルベルを迎えそうなSGです。わたし、ひとりぼっち……

open System.Linq

let puellaMagi = ["Mami"]

puellaMagi.Single() |> printfn "%s"

let newPuellaMagi = "Madoka" :: puellaMagi

(*
ひとりぼっちじゃないのでエラー
newPuellaMagi.Single() |> printfn "%s"
newPuellaMagi.SingleOrDefault() |> printfn "%s"
*)

(* SingleOrDefault は空のシーケンスに対してのみ既定値を返す *)
[].SingleOrDefault() |> printfn "%s"

 実行結果

Mami


val puellaMagi : string list = ["Mami"]
val newPuellaMagi : string list = ["Madoka"; "Mami"]


 ところで、option のデフォルトって、None なのか、null なのかどっちなんだろう……と思って調べてみました。

let list = [Some("111")]
let empty = list.Tail
empty.SingleOrDefault()

 実行結果

val list : string option list = [Some "111"]
val empty : string option list = []

val it : string option = None

 もう None も恐くない