FsToolkit.ErrorHandling.IcedTasks 4.16.0

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

// Install FsToolkit.ErrorHandling.IcedTasks as a Cake Tool
#tool nuget:?package=FsToolkit.ErrorHandling.IcedTasks&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 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.1 兼容。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解有关目标框架.NET Standard的更多信息。

NuGet包

此包未由任何NuGet包使用。

GitHub仓库

此包未由任何流行的GitHub仓库使用。

版本 下载 最后更新
4.16.0 265 7/15/2024
4.15.3 76 7/14/2024
4.15.3-beta001 60 7/14/2024
4.15.2 496 5/2/2024
4.15.2-beta001 45 5/2/2024
4.15.1 146 1/15/2024
4.15.0 103 1/10/2024
4.14.0 120 1/2/2024
4.13.0 140 12/10/2023
4.13.0-beta002 89 12/10/2023
4.13.0-beta001 90 12/10/2023
4.12.0 135 11/27/2023
4.11.1 129 11/23/2023
4.11.0 108 11/11/2023
4.10.0 122 10/16/2023
4.9.0 162 7/10/2023
4.8.0 122 7/7/2023
4.7.0 122 6/21/2023
4.7.0-beta001 106 6/21/2023
4.6.0 159 4/20/2023
4.6.0-beta001 105 4/20/2023
4.5.0 211 3/27/2023
4.5.0-beta002 123 3/19/2023
4.5.0-beta001 111 3/6/2023
4.4.0 220 2/21/2023
4.3.0 291 1/20/2023
4.2.1 333 12/19/2022
4.2.0 323 12/17/2022
4.1.0 264 12/13/2022
4.1.0-beta001 120 12/13/2022
4.0.0 311 11/19/2022
4.0.0-beta001 138 11/19/2022
3.3.1 303 11/19/2022
3.3.1-beta004 122 11/19/2022
3.3.1-beta003 121 11/18/2022
3.3.1-beta002 121 11/18/2022
3.3.1-beta001 120 11/18/2022
3.3.0-beta001 140 11/9/2022
3.2.0 332 10/31/2022
3.2.0-beta001 128 10/31/2022
3.1.0 394 10/19/2022
3.0.1 351 10/18/2022
3.0.0 376 10/14/2022
3.0.0-beta008 137 10/14/2022
3.0.0-beta007 154 4/15/2022
3.0.0-beta006 138 4/5/2022
3.0.0-beta005 138 4/5/2022
3.0.0-beta004 133 4/5/2022

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