既然C# 6 is finally going to have this long-anticipated ?. operator,F#中有类似的东西吗?我不是在谈论? operator。
答案 0 :(得分:14)
惯用语F#根本没有空值,那么它会有什么用处?在F#中,模拟缺少值的最常用方法是使用option
。
当我需要与可能返回null
的.NET代码进行互操作时,我会尽快将其转换为选项,使用如下函数:
let toOption (x : obj) =
match x with
| null -> None
| _ -> Some x
只要将您的值建模为option
,就可以将其与例如{{1}}一起构建。 Option.map,它与提议的C#运算符具有相同的目的(但更好,更安全)。
答案 1 :(得分:4)
您可以先将可空栏目提升为选项。然后你可以使用选项计算表达式来实现同样的目的。
答案 2 :(得分:4)
在函数式语言中,条件/组合遍历,特别是在嵌套结构中,通常使用explained with a succinct example in this SO thread的镜头概念建模。
在F#环境中,有Aether;请参阅intro article和guide,其内容基于Lenses support developed and written about by Mauricio Scheffer中的FSharpx here。