Я создал библиотеку с открытым исходным кодом. FSharp.Interop.NullOptAble доступен для nuget.
Он не только работает как рабочий процесс с опциями, но и работает как нулевой или обнуляемый рабочий процесс какхорошо.
let x = Nullable(3)
let y = Nullable(3)
option {
let! x' = x
let! y' = y
return (x' + y')
} (* |> should equal (Some 6) *)
Работает так же хорошо, как
let x = Some(3)
let y = Some(3)
option {
let! x' = x
let! y' = y
return (x' + y')
} (* |> should equal (Some 6) *)
Или даже
let x = "Hello "
let y = "World"
option {
let! x' = x
let! y' = y
return (x' + y')
} (* |> should equal (Some "Hello World") *)
И если что-то есть null
или None
let x = "Hello "
let y:string = null
option {
let! x' = x
let! y' = y
return (x' + y')
} (* |> should equal None *)
Наконец, если у вас много вещей типа nullable, у меня есть cexpr для chooseSeq {}
, а если вы yield!
что-то null
/ None
, это просто не получится.
См. Больше примеров здесь .