6.4.41 在 C#中使用选项类型
扩展方法能够以流畅的方式来编写使用绑定和映射的代码。由于括号中的数字可能会造成混乱,因此要注意,调用 Map 是嵌套在 lambda 函数中的,作为 Bind 的参数值:
Option<int> ReadAndAdd() {
returnReadInput().Bind(n =>
ReadInput().Map(m=> m + n));
}
在 C# 中,使用高阶函数与处理选项类型之间的区别更为明显。C# 不直接支持类似差别联合之类的类型,但如果类型能提供适当的处理函数,代码会变得可读。在 C# 中写函数式程序,记住这一点很重要:虽然一些底层构造可能感觉不自然的,但由于有了 lambda 函数,用 C# 一样也能写出优雅的函数代码。
到目前为止,我们已经讨论了使用高阶函数处理多值和可选值。在前一章,我们还谈到了最后一种值是函数,在下一节,我们将看到在高阶函数值来处理函数值同样非常有用。