加载中...
一等公民指在编程语言中能够被完整地当作数据来处理的实体,即可以作为参数传递、作为返回值返回、赋值给变量以及在运行时创建。当函数具备这些能力时,便称该语言支持一等函数,这是函数式编程的基础。

| 中文名 | 一等公民 |
| 外文名 | First-class Citizen |
| 提出者 | 克里斯托弗·斯特雷奇 |
| 典型实例 | 一等函数 |
| 相关概念 | 高阶函数、闭包 |
一等公民是编程语言设计中的一个概念,指某类实体在该语言中享有最完整的使用权限:可以被赋值给变量、作为参数传入函数、作为结果从函数返回、存储于数据结构中,并可在运行时动态创建。这一术语由英国计算机科学家克里斯托弗·斯特雷奇(Christopher Strachey)在上世纪六十年代提出。
一个实体是否为一等公民,反映了语言对它的重视程度。若函数是一等公民,该语言便被称为支持一等函数,函数就能像整数、字符串等普通值一样自由流转。除函数外,类型、模块、延续等在不同语言中也可能被设计为一等公民。与之相对的是二等或三等地位,即只能受到有限的使用方式。
一等函数是高阶函数、回调、闭包、柯里化等技术得以实现的前提。在事件驱动编程中,函数作为回调被传递并在事件发生时调用;在数据处理中,映射、过滤、归约等操作都接受函数作为参数。许多现代语言把函数设计为一等公民,极大增强了抽象和组合能力,也让函数式编程范式得以在通用语言中普及。
问:一等函数和高阶函数是一回事吗?答:不完全相同。一等函数描述函数在语言中的地位,高阶函数指接受函数为参数或返回函数的函数。正是因为函数是一等公民,高阶函数才成为可能。
问:哪些实体常被设计为一等公民?答:最典型的是函数,此外部分语言把类型、类、模块、协程、延续等也作为一等公民,使它们能被灵活操作与组合。

| 中文名 | 一等公民 |
| 外文名 | First-class Citizen |
| 提出者 | 克里斯托弗·斯特雷奇 |
| 典型实例 | 一等函数 |
| 相关概念 | 高阶函数、闭包 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧