我有一个使用管道运算符的表达式,该表达式将值转换为字符串,然后转换为布尔值,但有时原始值可能为空。
当值为 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(使用前将#替换为@)