我想为一个有区别的联合定义一个默认值,如下所示:
open System.Linq
type Result =
| Ok
| Error
let results : seq<Result> = [] |> Seq.ofList
let firstResult = results.FirstOrDefault()
// I want firstResult to be Error, currently it is null.
Run Code Online (Sandbox Code Playgroud)
选项<'a>以这种方式工作(firstResult将是None),所以它应该是可能的.谢谢你的帮助.
编辑:我正在使用SQLDataProvider,并希望编写类似的代码
let userEmail =
query {
for user in dbContext.Public.Users do
where (user.Id = 42)
select (Ok user.Email)
headOrDefault
// should result in Error
// when no user with Id=42 exists
}
Run Code Online (Sandbox Code Playgroud)
我的实际结果类型如下所示:
type Result<'a> =
| Ok of 'a
| Failure of string // Expected, …Run Code Online (Sandbox Code Playgroud)