F#中是否有条件访问运算符(类似于C#中的new?。)?

时间:2014-06-06 08:10:15

标签: f#

既然C# 6 is finally going to have this long-anticipated ?. operator,F#中有类似的东西吗?我不是在谈论? operator

3 个答案:

答案 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 articleguide,其内容基于Lenses support developed and written about by Mauricio Scheffer中的FSharpx here