本项目为为一个Nuget包,灵感来源于npm包is-thirteen
,
也可以看作该项目在.Net平台上的移植版本。
用于判断一个数字是否等于13
。
动词规范:所有API中,简介以“计算”或“将”开头的方法均不能作为链式编程最后一个方法,因为它不会返回一个布尔值。因为作者不希望自己的方法被他人直接使用,所以它将返回一个逻辑混乱的数字。其余方法均可以作为链中的最后一个方法。
使用本项目为int
和double
类型扩展的IsThirteen
方法,可以直接判断该数字是否等于13
,例如:
int num = 13;
Console.WriteLine(num.IsThirteen());
double data = 12.8;
Console.WriteLine(data.IsThirteen());
控制台打印结果:
True
False
作为一个功能完整的包,该项目也为int
和double
类型提供了算术运算的扩展方法,可以对数字进行链式算术运算之后判断其是否等于13
。
支持的几种算术运算如下表所示:
方法调用 | 简介 |
---|---|
x.Plus(y) |
计算x+y 的值 |
x.Minus(y) |
计算x-y 的值 |
x.Multiply(y) |
计算xy 的值 |
x.DivideBy(y) |
计算x/y 的值 |
x.Pow(y) |
计算x^y 的值 |
通过链式算术运算之后判断其是否等于13
,例如:
int num = 4;
Console.WriteLine(num.Pow(2).IsThirteen());
double data = 12.8;
Console.WriteLine(data.Plus(0.2).IsThirteen());
控制台打印结果:
False
True
有时候我们希望对多个运算结果进行整合,因此添加了对于bool
类型的几个扩展方法,如下:
方法调用 | 简介 |
---|---|
x.And(y) |
返回x&&y 的值 |
x.Or(y) |
返回`x |
x.Not() |
返回!x 的值 |
接下来我们就可以将它们与另外的API进行组合了。注意:动词规范中已经提醒了你,所有API中,简介以“判断”开头的方法均返回一个bool
值。
因此我们可以对这些结果进行组合,比如:
const double test = -1;
Console.WriteLine(test.Minus(12).IsThirteen().And(
test.Plus(14).IsThirteen()));
Console.WriteLine(test.Minus(12).IsThirteen().Or(
test.Plus(14).IsThirteen()));
控制台打印结果:
False
True
当然,事情总不是过于严苛。我们也提供了一系列方法,用于判断某些数字是否在13的某些范围内。
支持的几种范围运算如下表所示:
方法调用 | 简介 |
---|---|
x.Up() |
将x 向上取整 |
x.Down() |
将x 向下取整 |
x.Rough() |
判断x 是否近似等于13 |
x.Within(y) |
判断x 是否在[13-y,13+y] 内 |
x.Without(y) |
判断x 是否不在[13-y,13+y] 内 |
x.HaveThirteen() |
判断x 是否含有字符串13 |
以下是一个简单的示例:
const double test = -1;
Console.WriteLine(test.Multiply(-1).Plus(11.7).
Rough().IsThirteen());
Console.WriteLine(test.Plus(1).Within(15));
控制台打印结果:
True
True
我们判断一个数是否等于13总会有其特定的意义。例如据此做一些特定操作,自动化函数组接受一到两个Action
委托,用于在指定条件满足时进行操作,如下:(其中x
是int
或double
)
方法调用 | 简介 |
---|---|
x.DoIfThirteen(action) |
执行action 如果x=13 |
x.DoIfHaveThirteen(action) |
执行action 如果x 含有字符串13 |
在不满足时也可以做另一些事情:(其中x
是int
或double
)
方法调用 | 简介 |
---|---|
x.DoIfThirteenOrNot(actionT,actionF) |
执行actionT 如果x=13 ,否则执行actionF |
x.DoIfHaveThirteenOrNot(actionT,actionF) |
执行actionT 如果x 含有字符串13 ,否则执行actionF |
当然,为了增强灵活性,我们也为bool
添加了相应的方法:(其中x
是bool
)
方法调用 | 简介 |
---|---|
x.DoTrue(action) |
执行action 如果x=true |
x.DoIfTrueOrFalse(actionT,actionF) |
执行action 如果x=true ,否则执行actionF |
动词规范:所有API中,简介以“执行”开头的方法能且只能作为链式编程最后一个方法,因为它的返回值类型为void
。
以下是一个简单的示例:
const double test = -1;
test.Plus(10).DoIfThirteen(() => Console.WriteLine("Yes!"));
test.Minus(2).Rough().IsThirteen().Or(
test.Plus(14).IsThirteen()).DoIfTrue(() =>
Console.WriteLine("Oh!"));
控制台打印结果:
Oh!
如果你有其它想法,欢迎发送pull request.
Copyright Arabidopsis.