我正在寻找一种方法来获取 F# 选项的值,或者如果它是 None 则使用默认值。
这似乎很常见,我不敢相信预定义的东西不存在。这是我现在的做法:
// val getOptionValue : Lazy<'a> -> Option<'a> -> 'a
let getOptionValue (defaultValue : Lazy<_>) = function Some value -> value | None -> defaultValue.Force ()
我(有点)在寻找相当于 C# 的 F# ?运算符(operator):
string test = GetString() ?? "This will be used if the result of GetString() is null.";
Option 模块中没有任何功能可以完成我认为非常基本的任务。我错过了什么?
请您参考如下方法:
您可以轻松创建自己的运算符(operator)来做同样的事情。
let (|?) = defaultArg
您的 C# 示例将变为
let getString() = (None:string option)
let test = getString() |? "This will be used if the result of getString() is None.";;
val getString : unit -> string option
val test : string = "This will be used if the result of getString() is None."
Here's a blog post更详细一点。
编辑:尼康三世为运算符(operator)提供了更好的实现,所以我更新了它。