FsToolkit.ErrorHandling.TaskResult 4.16.0

dotnet add package FsToolkit.ErrorHandling.TaskResult --version 4.16.0                
NuGet\Install-Package FsToolkit.ErrorHandling.TaskResult -Version 4.16.0                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="FsToolkit.ErrorHandling.TaskResult" Version="4.16.0" />                
对于支持 PackageReference 的项目,请将此 XML 节点复制到项目文件中以引用此包。
paket add FsToolkit.ErrorHandling.TaskResult --version 4.16.0                
#r "nuget: FsToolkit.ErrorHandling.TaskResult, 4.16.0"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将它复制到交互式工具或脚本源代码中,以引用此包。
// Install FsToolkit.ErrorHandling.TaskResult as a Cake Addin
#addin nuget:?package=FsToolkit.ErrorHandling.TaskResult&version=4.16.0

// Install FsToolkit.ErrorHandling.TaskResult as a Cake Tool
#tool nuget:?package=FsToolkit.ErrorHandling.TaskResult&version=4.16.0                

FsToolkit.ErrorHandling

FsToolkit.ErrorHandling 是一个用于在 F# 中工作与 Result 类型的实用库,并允许您进行清晰、简单和强大的错误处理。

该库提供如 mapbindapplytraversesequence 等辅助函数,以及用于操作 Result<'a, 'b>Result<'a option, 'b>Async<Result<'a, 'b>>Async<Result<'a option, 'b>>Result<'a, 'b list> 的计算表达式和前缀操作符。

它受到了 Chessie 和 Cvdm.ErrorHandling(后者现已被合并到 FsToolkit.ErrorHandling)的启发。

FsToolkit.ErrorHandling 靶向 .NET Standard 2.0 和 .NET Framework 4.6.1,并支持 Fable。

文档

文档在此处 提供

其他资料

构建

GitHub Actions
GitHub Actions
Build History

NuGet

包名 发布 预发布
FsToolkit.ErrorHandling NuGet NuGet
FsToolkit.ErrorHandling.TaskResult NuGet NuGet
FsToolkit.ErrorHandling.JobResult NuGet NuGet
FsToolkit.ErrorHandling.AsyncSeq NuGet NuGet
FsToolkit.ErrorHandling.IcedTasks NuGet NuGet

本地开发

Devcontainer

本仓库为VSCode配置了devcontainer。更多详细信息请参见

本地设置

可选

为了在本地上测试fable构建,您需要

  • Node
    • v18.0.0或更高版本
    • 不是必须的,但建议您使用NVM来轻松管理多个版本的Node
  • Python
    • v3.10.0或更高版本
    • 适用于Fable-Python
编译
> build.cmd <optional buildtarget> // on windows
$ ./build.sh  <optional buildtarget>// on unix

未经指定构建目标,默认目标为DotnetPack,它将在dotnet上运行所有项目的测试,然后将项目打包成nuget包。有关其他显著的目标,请参阅以下内容。

构建目标
  • Clean - 将清理所有项目的 binobj 文件夹
  • DotnetTest - 将运行dotnet项目的测试
  • NpmTest - 将运行fable-javascript项目的测试
  • PythonTest - 将运行fable-python项目的测试
  • RunTests - 将运行dotnetfable-javascriptfable-python项目的测试
  • FormatCode - 将运行 fantomas 对代码库进行格式化

这不是一个详尽无遗的列表。更多目标可以在 ./build/build.fs 文件中找到。

一个激励性的例子

此组合登录流程的示例展示了如何使用计算表达式和一些辅助函数,仅使用这个库就能实现清晰、简单、强大的错误处理。(该库还有许多其他辅助函数和计算表达式以及中缀操作符;有关详细信息,请参阅文档。)

// Given the following functions:
//   tryGetUser: string -> Async<User option>
//   isPwdValid: string -> User -> bool
//   authorize: User -> Async<Result<unit, AuthError>>
//   createAuthToken: User -> Result<AuthToken, TokenError>

type LoginError = InvalidUser | InvalidPwd | Unauthorized of AuthError | TokenErr of TokenError

let login (username: string) (password: string) : Async<Result<AuthToken, LoginError>> =
  asyncResult {
    // requireSome unwraps a Some value or gives the specified error if None
    let! user = username |> tryGetUser |> AsyncResult.requireSome InvalidUser

    // requireTrue gives the specified error if false
    do! user |> isPwdValid password |> Result.requireTrue InvalidPwd

    // Error value is wrapped/transformed (Unauthorized has signature AuthError -> LoginError)
    do! user |> authorize |> AsyncResult.mapError Unauthorized

    // Same as above, but synchronous, so we use the built-in mapError
    return! user |> createAuthToken |> Result.mapError TokenErr
  }

赞助商

<a href="https://www.ajira.tech"><img src="./Ajira-logo.png" alt="Ajira Technologies, India" width="200" /></a>

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 兼容。 netstandard2.1 兼容。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET 标准化 的信息。

NuGet 包 (7)

显示依赖 FsToolkit.ErrorHandling.TaskResult 的前 5 个 NuGet 包

下载
NBomber

适用于 Pull 和 Push 场景的现代化且灵活的负载测试框架,旨在测试任何系统,无论协议(HTTP/ WebSocket/AMQP 等)或语义模型(Pull/Push)。

FsToolkit.ErrorHandling.JobResult

FsToolkit.ErrorHandling 是一个基于 F# Result 类型的实用程序库,使错误处理保持一致且功能强大。

FsToolkit.ErrorHandling.IcedTasks

FsToolkit.ErrorHandling 是一个基于 F# Result 类型的实用程序库,使错误处理保持一致且功能强大。

TinyEventStore

TinyEventStore 做的事!

p1eXu5.FSharp.Ports.PortTaskResult

PortTaskResult 计算表达式。

GitHub 仓库

此包不被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
4.16.0 3,025 7/15/2024
4.15.3 626 7/14/2024
4.15.3-beta001 81 7/14/2024
4.15.2 26,796 5/2/2024
4.15.2-beta001 96 5/2/2024
4.15.1 46,005 1/15/2024
4.15.0 27,234 1/10/2024
4.14.0 2,782 1/2/2024
4.13.0 4,757 12/10/2023
4.13.0-beta002 799 12/10/2023
4.13.0-beta001 831 12/10/2023
4.12.0 3,708 11/27/2023
4.11.1 3,206 11/23/2023
4.11.0 11,021 11/11/2023
4.10.0 9,967 10/16/2023
4.9.0 330,122 7/10/2023
4.8.0 2,348 7/7/2023
4.7.0 7,857 6/21/2023
4.7.0-beta001 1,160 6/21/2023
4.6.0 29,192 4/20/2023
4.6.0-beta001 1,226 4/20/2023
4.5.0 9,001 3/27/2023
4.5.0-beta002 1,264 3/19/2023
4.5.0-beta001 2,041 3/6/2023
4.4.0 83,786 2/21/2023
4.3.0 14,877 1/20/2023
4.2.1 11,804 12/19/2022
4.2.0 1,731 12/17/2022
4.1.0 3,155 12/13/2022
4.1.0-beta001 1,237 12/13/2022
4.0.0 31,786 11/19/2022
4.0.0-beta001 1,145 11/19/2022
3.3.1 50,056 11/19/2022
3.3.1-beta004 1,177 11/19/2022
3.3.1-beta003 1,177 11/18/2022
3.3.1-beta002 1,230 11/18/2022
3.3.1-beta001 1,134 11/18/2022
3.3.0-beta001 1,209 11/9/2022
3.2.0 89,907 10/31/2022
3.2.0-beta001 1,144 10/31/2022
3.1.0 17,643 10/19/2022
3.0.1 2,411 10/18/2022
3.0.0 4,919 10/14/2022
3.0.0-beta008 1,222 10/14/2022
3.0.0-beta007 29,305 4/15/2022
3.0.0-beta006 1,212 4/5/2022
3.0.0-beta005 1,249 4/5/2022
3.0.0-beta004 1,292 4/5/2022
3.0.0-beta003 1,235 3/30/2022
3.0.0-beta002 1,215 2/21/2022
3.0.0-beta001 1,228 2/21/2022
2.13.0 951,277 1/11/2022
2.13.0-beta001 1,180 1/11/2022
2.12.0 2,277 1/6/2022
2.12.0-beta001 1,133 1/6/2022
2.11.1 18,322 12/1/2021
2.11.1-beta001 1,761 12/1/2021
2.11.0 5,100 11/24/2021
2.11.0-beta004 4,175 11/24/2021
2.11.0-beta002 4,032 11/24/2021
2.11.0-beta001 3,927 11/24/2021
2.10.0 14,627 11/13/2021
2.9.0 2,335 11/10/2021
2.9.0-beta001 1,246 11/10/2021
2.8.1 1,692 11/7/2021
2.8.0 1,567 11/7/2021
2.8.0-beta001 1,361 11/7/2021
2.7.1 3,202 10/19/2021
2.7.1-beta001 1,278 10/19/2021
2.7.0 13,520 8/2/2021
2.7.0-测试版001 1,309 8/2/2021
2.6.0 3,905 7/7/2021
2.6.0-测试版001 1,261 7/7/2021
2.5.0 13,908 5/26/2021
2.5.0-测试版001 1,387 5/26/2021
2.4.0 1,824 5/23/2021
2.4.0-测试版001 1,289 5/23/2021
2.3.0 3,390 5/14/2021
2.3.0-测试版002 1,263 5/14/2021
2.2.0 11,568 4/21/2021
2.1.2 28,254 2/27/2021
2.1.1 1,635 2/26/2021
2.1.1-测试版001 1,350 2/26/2021
2.1.0 1,733 2/26/2021
2.1.0-测试版003 1,427 2/26/2021
2.1.0-测试版002 1,354 2/25/2021
2.1.0-测试版001 1,431 2/25/2021
2.0.0 543,276 11/20/2020
2.0.0-测试版002 1,544 11/18/2020
2.0.0-测试版001 1,606 8/29/2020
1.4.3 215,035 7/22/2020
1.4.0 5,248 6/5/2020
1.3.2 1,967 6/5/2020
1.3.1 2,850 5/29/2020
1.3.1-测试版001 1,617 5/25/2020
1.3.0 3,382 5/25/2020
1.3.0-测试版006 1,596 5/25/2020
1.3.0-测试版005 1,659 5/25/2020
1.3.0-测试版004 1,485 5/12/2020
1.2.6 23,131 2/15/2020
1.2.5 17,391 10/18/2019
1.2.4 2,006 10/10/2019
1.2.3 2,994 7/22/2019
1.2.2 2,217 5/31/2019
1.2.1 2,016 5/22/2019
1.1.1 1,733 5/9/2019
1.1.0 1,943 5/7/2019

- [添加Task.ignore](https://github.com/demystifyfp/FsToolkit.ErrorHandling/pull/272) 致谢 @odytrice