Option.Map results in exception creating a new Some(null)
dcook-net opened this issue · comments
Hi.
First off: reading the book at the moment and think it's great. Thank you.
I encountered a bug today when I tried to do this:
return Option<T>.Map(t => t.NullableA?.NullableB) // and either nullable A or B were null!
Creating a Some with a value of null threw an exception.
My first thought was 'why doesn't that just create a None instead of throwing' but then I realised Its because its within a constructor.
What would you recommend as a sensible replacement to the code above?
I replaced it with
return Option<T>.Match( Some: t => t.NullableA?.NullableB is null ? None : Some(b.NullableA?.NullableB), None:() => None);
I'm assuming I've misunderstood something.
Thanks
Dave