小编Ren*_*rer的帖子

定义区分联合的默认值

我想为一个有区别的联合定义一个默认值,如下所示:

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)

f# discriminated-union

4
推荐指数
1
解决办法
249
查看次数

标签 统计

discriminated-union ×1

f# ×1