F# 寓言 return Null/None 的最佳方式

F# Fable Best Way to return Null/None

我正在使用寓言。我正在查找数组,如果键不存在,我想 return null 或类似的。因为它是建立在 Javascript 上的,它本质上是不安全的类型,我不确定我是否应该全力以赴使 return 值成为一个选项类型,但我可能会做

我有一个看起来像这样的函数

    let getDataFunction() : obj =
        let data = dostuff() //Returns Map<string, obj>
        match data.TryFind key with
        | Some result  -> result //Is a boxed obj of 'a
        | None -> box null

但是当我尝试调用它时

let parsedData = unbox getDataFunction()

函数 return 是一个带有 Some{value: null} 的 Option 类型。 如果我使用 "" 或 0 或 false

而不是 null,它工作正常

我应该怎么做才能使 return None 或 null?

如果我对你的问题的理解正确,你可以更新函数,使其 returns NoneSome 不是像这样的空值:

let getDataFunction() =
    let data = dostuff() //Returns Map<string, obj>
    data.TryFind key
    |> Option.bind Option.ofObj

Option.ofObj returns None 为空值。将它与 Option.bind 结合起来确保我们只有一个选项,而不是一个选项的嵌套选项。