第五章局部使用函数值
本章介绍
■ 认识值的角色
■ 用差别联合表示值
■ 使用泛类型和类型推断
■ 用 lambda 语法创建函数
这一章讨论值(values),这是一个在不同的编程语言中大量使用的术语,因此,我们应该首先有我们的定义。当我们讨论函数编程的概念时,将函数程序描述为有输入,有返回结果的计算。简单来说,值既可以用作输入,也可以用作结果,就是说,在我们所实现的计算内部,所使用的一切都是值。
写一个执行计算的函数,我们可以把所有给函数的输入作为输入参数,那么,如果函数需要返回有多个值的结果,又该如何呢?在 C# 中,我们可以使用 out 参数,或定义一个新的类,把这些值组织为一个对象。这两种方法似乎都不协调,因为,在这里对输入和输出的处理方法,完全不同。我们需要的是一种能够把多个值组合成一个值(例如,字符串类型的项名称和整数类型的数量),且这个值既可以作为输入的参数值,也可以作为结果的方法。在第三章,我们简单地讨论了元组,就能达到这样的目的;这里,我们要更详细地讨论元组。
还有一种情况,当计算可能把选项作为输入,例如,搜索函数,参数可以是名字,也可以是项目 ID。在 C# 中,我们可能会让函数有两个参数,并将一个参数值设置为无效值(ID 为 -1 或名字为 null)。对这种问题,我们有更优雅的解决方案,能够将这些值合并为一个选项值,支持从几个选项选择一个,而不是全部。
在函数语言中,函数是另一种(非常重要)类型的值,值是理解函数编程的基础,这就是为什么我们要以此为起点的原因。