对 null/空值使用 bool.Parse 时出错

2024-04-26

我有一个使用管道运算符的表达式,该表达式将值转换为字符串,然后转换为布尔值,但有时原始值可能为空。 当值为 null 时,如何使用模式匹配或其他方式假设 false?

type kv = Dictionary<string, obj>
let allDayEvent (d: kv) = d.["fAllDayEvent"] |> string |> bool.Parse

有很多地方可以通过模式匹配来保护:字典查找、转换、解析。这是一个包含所有这些内容的示例:

let allDayEvent (d: kv) = 
    match d.TryGetValue "fAllDayEvent" with
    | true, v ->
        match v with
        | null -> printfn "null found"
        | :? string as s -> 
            match bool.TryParse s with
            | true, b -> printfn "found a bool: %A" b
            | _ -> printfn "That's not a bool?"
        | v -> printfn "Found something of type %s" (v.GetType().Name)
    | _ -> printfn "No such key"

另请参阅相关问题,例如这个 https://stackoverflow.com/questions/6817852/handling-null-values-in-f.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 null/空值使用 bool.Parse 时出错 的相关文章

随机推荐