f# - 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?
解决方案
如果我正确理解了您的问题,您可以更新函数,使其返回None
或Some
不返回 null 值,如下所示:
let getDataFunction() =
let data = dostuff() //Returns Map<string, obj>
data.TryFind key
|> Option.bind Option.ofObj
Option.ofObj
返回None
一个空值。将其与Option.bind
确保我们只有一个选项,而不是选项的嵌套选项相结合。
推荐阅读
- php - 在 Laravel ui auth forgot password 表单中更改输入名称
- java - 带有片段的空指针异常 - 尝试调用虚拟方法“void androidx.recyclerview.widget.RecyclerView.setHasFixedSize(boolean)”
- c - gdb 运行程序后自动退出
- r - 删除字符串中的游程重复数字和 NA
- android - 使用 Fetch 库 Android 为组下载显示单个 ProgressBar
- javascript - 如何将按钮放在输入字段中?
- python - 如何在 python 中加载 Electron + EEL
- wpf - 自定义 WPF DataGrid 从 ViewModel 中手动选择一行或多行
- html - 如何迭代对象以在 Angular 中打印这种类型的 UI?
- pandas - 熊猫读取 sql 不返回所有行