FsToolkit.ErrorHandling 4.16.0

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

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

Fs Toolkit.ErrorHandling

Fs Toolkit.ErrorHandling 是一个实用程序库,用于在 F# 中处理 Result 类型,并允许你进行清晰、简单和强大的错误处理。

该库提供了如 mapbindapplytraversesequence 等实用函数,以及用于处理 Result &'a, 'b>Result &'a option, 'b>Async Async Result <'a, 'b list> 的计算表达式和运算符。

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

Fs Toolkit.ErrorHandling 针对.NET Standard 2.0 和 .NET Framework 4.6.1,并支持 Fable。

文档

文档可在 此处查看

其他材料

版本控制

GitHub Actions
GitHub Actions
Build History

NuGet

包名 发布 预发布
Fs Toolkit.ErrorHandling NuGet NuGet
Fs Toolkit.ErrorHandling.TaskResult NuGet NuGet
Fs Toolkit.ErrorHandling.JobResult NuGet NuGet
Fs Toolkit.ErrorHandling.AsyncSeq NuGet NuGet
Fs Toolkit.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包。更多信息请参考以下内容。

构建目标
  • 清洁 - 将清理所有项目的binobj文件夹
  • DotnetTest - 将运行dotnet项目的测试
  • NpmTest - 将运行fable-javascript项目的测试
  • PythonTest - 将运行fable-python项目的测试
  • RunTests - 将运行dotnetfable-javascript项目的测试
  • 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 标准化 netstandard2.0 兼容。 netstandard2.1 兼容。
.NET 框架 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 Standard 的信息。

NuGet 包 (31)

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

下载
Fs Toolkit.ErrorHandling.TaskResult

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

Oryx

.NET SDK 用于编写 HTTP 客户端

Fs Toolkit.ErrorHandling.AsyncSeq

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

WldMr.Excel.Functions

使用 ExcelDna 和 F# 编写的通用 Excel 函数。主要与数组和相关字符串操作。

Sharpino

简单的 F# 事件源库

GitHub 存储库

此包没有被任何流行的 GitHub 存储库使用。

版本 下载 最后更新
4.16.0 7,152 7/15/2024
4.15.3 866 7/14/2024
4.15.3-beta001 123 7/14/2024
4.15.2 40,292 5/2/2024
4.15.2-beta001 144 5/2/2024
4.15.1 98,264 1/15/2024
4.15.0 32,955 1/10/2024
4.14.0 4,624 1/2/2024
4.13.0 9,301 12/10/2023
4.13.0-beta002 1,176 12/10/2023
4.13.0-beta001 1,119 12/10/2023
4.12.0 9,859 11/27/2023
4.11.1 3,995 11/23/2023
4.11.0 21,497 11/11/2023
4.10.0 16,409 10/16/2023
4.9.0 354,389 7/10/2023
4.8.0 3,165 7/7/2023
4.7.0 15,691 6/21/2023
4.7.0-beta001 1,658 6/21/2023
4.6.0 72,826 4/20/2023
4.6.0-beta001 1,736 4/20/2023
4.5.0 32,192 3/27/2023
4.5.0-beta002 1,730 3/19/2023
4.5.0-beta001 3,164 3/6/2023
4.4.0 144,370 2/21/2023
4.3.0 53,069 1/20/2023
4.2.1 20,467 12/19/2022
4.2.0 2,546 12/17/2022
4.1.0 10,460 12/13/2022
4.1.0-beta001 1,661 12/13/2022
4.0.0 37,653 11/19/2022
4.0.0-beta001 1,625 11/19/2022
3.3.1 56,521 11/19/2022
3.3.1-beta004 1,734 11/19/2022
3.3.1-beta003 1,647 11/18/2022
3.3.1-beta002 1,716 11/18/2022
3.3.1-beta001 1,630 11/18/2022
3.3.0-beta001 1,652 11/9/2022
3.2.0 122,700 10/31/2022
3.2.0-beta001 1,531 10/31/2022
3.1.0 23,505 10/19/2022
3.0.1 3,569 10/18/2022
3.0.0 8,055 10/14/2022
3.0.0-beta008 1,705 10/14/2022
3.0.0-beta007 32,218 4/15/2022
3.0.0-beta006 1,732 4/5/2022
3.0.0-beta005 1,762 4/5/2022
3.0.0-beta004 1,793 4/5/2022
3.0.0-beta003 1,727 3/30/2022
3.0.0-beta002 2,421 2/21/2022
3.0.0-beta001 1,712 2/21/2022
2.13.0 1,147,589 1/11/2022
2.13.0-beta001 1,675 1/11/2022
2.12.0 4,050 1/6/2022
2.12.0-beta001 1,675 1/6/2022
2.11.1 36,468 12/1/2021
2.11.1-beta001 2,266 12/1/2021
2.11.0 9,372 11/24/2021
2.11.0-beta004 4,750 11/24/2021
2.11.0-beta002 4,644 11/24/2021
2.11.0-beta001 4,581 11/24/2021
2.10.0 37,222 11/13/2021
2.9.0 7,934 11/10/2021
2.9.0-beta001 1,771 11/10/2021
2.8.1 6,397 11/7/2021
2.8.0 2,276 11/7/2021
2.8.0-beta001 1,963 11/7/2021
2.7.1 10,507 10/19/2021
2.7.1-beta001 1,827 10/19/2021
2.7.0 149,732 8/2/2021
2.7.0-beta001 1,923 8/2/2021
2.6.0 47,566 7/7/2021
2.6.0-beta001 1,897 7/7/2021
2.5.0 61,134 5/26/2021
2.5.0-beta001 1,974 5/26/2021
2.4.0 10,049 5/23/2021
2.4.0-beta001 1,875 5/23/2021
2.3.0 21,200 5/14/2021
2.3.0-beta002 1,808 5/14/2021
2.2.0 15,205 4/21/2021
2.1.2 84,334 2/27/2021
2.1.1 3,003 2/26/2021
2.1.1-beta001 1,914 2/26/2021
2.1.0 2,428 2/26/2021
2.1.0-beta003 2,007 2/26/2021
2.1.0-beta002 1,792 2/25/2021
2.1.0-beta001 1,958 2/25/2021
2.0.0 562,878 11/20/2020
2.0.0-beta002 2,129 11/18/2020
2.0.0-beta001 2,532 8/29/2020
1.4.3 243,120 7/22/2020
1.4.0 9,519 6/5/2020
1.3.2 2,658 6/5/2020
1.3.1 4,650 5/29/2020
1.3.1-beta001 2,207 5/25/2020
1.3.0 4,689 5/25/2020
1.3.0-beta006 2,135 5/25/2020
1.3.0-beta005 2,230 5/25/2020
1.3.0-beta004 2,214 5/12/2020
1.2.6 36,742 2/15/2020
1.2.5 30,126 10/18/2019
1.2.4 3,139 10/10/2019
1.2.3 108,624 7/22/2019
1.2.2 6,843 5/31/2019
1.2.1 28,058 5/22/2019
1.1.1 3,002 5/9/2019
1.1.0 2,723 5/7/2019
1.0.0 5,219 4/10/2019
0.0.14 2,756 1/27/2019
0.0.13 1,417 1/21/2019
0.0.12 1,772 1/4/2019
0.0.11 1,485 1/3/2019
0.0.10 1,440 12/30/2018
0.0.9 1,649 10/5/2018
0.0.8 1,550 10/5/2018
0.0.7 1,571 10/5/2018
0.0.6 1,504 10/4/2018
0.0.5 1,472 9/16/2018
0.0.4 1,504 9/16/2018
0.0.3 1,536 9/8/2018
0.0.2 1,536 9/8/2018
0.0.1 1,774 9/8/2018

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