Sanchime.Functional/Sanchime.Test/Program.cs

71 lines
1.8 KiB
C#

using Sanchime.Functional.Products;
using Sanchime.Functional.Extensions;
using Sanchime.Toolkits;
// try
// {
// void foo(Option<int> option)
// {
// var res = option.Map(x => x + 2);
// res.WriteLine();
// }
//
// "预计打印Some(12)".WriteLine();
// foo(10);
// "预计打印None".WriteLine();
// foo(Optional.None);
//
// "预计打印None".WriteLine();
// Optional.Some(Optional.None).WriteLine();
//
// "预计打印Some(String)".WriteLine();
// Optional.Some(1)
// .Map(x => x + 1.2)
// .Map(x => x.ToString())
// .Map(x => x.GetType().Name)
// .WriteLine();
//
// // 测试Option的Bind
// var parse = (string s) => Int32.TryParse(s, out int i) ? Optional.Some(i) : Optional.None;
// var foo1 = (string s) => s.Pipe(parse).Bind(Age.Of);
// "预计打印Some(111)".WriteLine();
// foo1("111").WriteLine();
// "预计打印None".WriteLine();
// foo1("aaa").WriteLine();
// "预计打印Some(123)".WriteLine();
// foo1("123").WriteLine();
// // 管道
// "预计打印None".WriteLine();
// foo1("1ab").Pipe(x => x.WriteLine());
// }
// catch (Exception ex)
// {
// ex.Message.WriteLine();
// ex.StackTrace.WriteLine();
// }
//
// public struct Age
// {
// private int _value;
//
// public static Option<Age> Of(int age)
// => IsValid(age) ? Optional.Some(new Age(age)) : Optional.None;
//
// private Age(int age)
// {
// if (!IsValid(age))
// {
// throw new ArgumentException("输入的年龄是无效的");
// }
// _value = age;
// }
//
// private static bool IsValid(int age)
// => age is (>= 0 and <= 150);
//
// public override string ToString()
// => _value.ToString();
// }