From bc275bae7cde87755d1f6ab96b6a2e93a8df8a1d Mon Sep 17 00:00:00 2001 From: Sanchime Date: Sun, 8 May 2022 21:09:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84Option,=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E4=B8=80=E4=BA=9BApply=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E9=87=8D=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sanchime.Functional/Core/Extensions/Option.cs | 21 +++++++++++++++++++ Sanchime.Test/Program.cs | 18 +++++++++------- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/Sanchime.Functional/Core/Extensions/Option.cs b/Sanchime.Functional/Core/Extensions/Option.cs index 0c838b1..d86d631 100644 --- a/Sanchime.Functional/Core/Extensions/Option.cs +++ b/Sanchime.Functional/Core/Extensions/Option.cs @@ -58,6 +58,27 @@ public static class OptionExtension public static Option> Apply(this Option> option, Option value) => option.Map(CurryingExtension.Curry).Apply(value); + public static Option> Apply(this Option> option, Option value) + => option.Map(CurryingExtension.CurryFirst).Apply(value); + + public static Option> Apply(this Option> option, Option value) + => option.Map(CurryingExtension.CurryFirst).Apply(value); + + public static Option> Apply(this Option> option, Option value) + => option.Map(CurryingExtension.CurryFirst).Apply(value); + + public static Option> Apply(this Option> option, Option value) + => option.Map(CurryingExtension.CurryFirst).Apply(value); + + public static Option> Apply(this Option> option, Option value) + => option.Map(CurryingExtension.CurryFirst).Apply(value); + + public static Option> Apply(this Option> option, Option value) + => option.Map(CurryingExtension.CurryFirst).Apply(value); + + public static Option> Apply(this Option> option, Option value) + => option.Map(CurryingExtension.CurryFirst).Apply(value); + #endregion public static T GetOrElse(this Option option, T @default) diff --git a/Sanchime.Test/Program.cs b/Sanchime.Test/Program.cs index 9109a88..342b628 100644 --- a/Sanchime.Test/Program.cs +++ b/Sanchime.Test/Program.cs @@ -17,15 +17,17 @@ using Sanchime.Toolkits; // res.WriteLine(); // } -// 测试Option的Bind -var parse = (string s) => Int32.TryParse(s, out int i) ? Option.Some(i) : Option.None; -var foo = (string s) => s.Pipe(parse).Bind(Age.Of); +// Option.Some(1).Map(x => (float)x + 1.2).Map(x => x.ToString()).Map(x => x.GetType().Name).WriteLine(); -foo("111").WriteLine(); -foo("aaa").WriteLine(); -foo("123").WriteLine(); -// 管道 -foo("1ab").Pipe(x => Console.WriteLine(x)); +// // 测试Option的Bind +// var parse = (string s) => Int32.TryParse(s, out int i) ? Option.Some(i) : Option.None; +// var foo = (string s) => s.Pipe(parse).Bind(Age.Of); + +// foo("111").WriteLine(); +// foo("aaa").WriteLine(); +// foo("123").WriteLine(); +// // 管道 +// foo("1ab").Pipe(x => Console.WriteLine(x)); public struct Age { private int _value;