首页 > 解决方案 > F# Fable 返回 Null/None 的最佳方式

问题描述

我正在和寓言一起工作。我正在查找数组,如果键不存在,我想返回 null 或类似的。由于它是建立在本质上类型不安全的 Javascript 之上的,我不确定我是否应该全力以赴将返回值设置为选项类型,但我可能会这样做

我有一个看起来像这样的功能

    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()

该函数返回带有 Some{value: null} 的 Option 类型。如果我使用 "" 或 0 或 false 而不是 null,它可以正常工作

我应该怎么做才能使其返回 None 或 null?

标签: f#fable-f#

解决方案


如果我正确理解了您的问题,您可以更新函数,使其返回NoneSome不返回 null 值,如下所示:

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

Option.ofObj返回None一个空值。将其与Option.bind确保我们只有一个选项,而不是选项的嵌套选项相结合。


推荐阅读