提问人:user4779 提问时间:10/29/2023 更新时间:10/29/2023 访问量:60
如何检查任务是否在F#中返回null?
How to check if a Task returned null in F#?
问:
我正在尝试从 F# 与 .NET 任务进行交互,因此等待 Tasks 有时会导致返回 null 而不是基础类型(例如:Task 本身在网络调用中超时)。问题是,如果 Task 的基础返回类型不允许 null 检查,我不知道如何在 F# 中检查这一点。这里有一个微不足道的例子来说明我的困境:
task {
let! a = Task.Run(fun () -> Some 1)
if isNull a then 0 //null checking not allowed, type system insists must be Some, None
}
如何显式检查是否为 null?如果我删除 !(删除 awaiting)并只执行 ,然后立即返回一个 Task,这当然不是 null。相反,只有结果可以变为空,但是如果我等待结果,或者执行.结果,则 F# 坚持认为它是一种选项类型,不允许进行 null 检查。let a = Task.Run(fun () -> Some 1)
答:
3赞
Fyodor Soikin
10/29/2023
#1
首先框定值:
if isNull (box a) then ...
拳击使它成为 ,你可以用它做一个空检查。obj
评论