it-swarm.cn

何时在编程语言/平台中将某个功能视为“头等公民”?

我已经看过很多次声明,例如-“请在某种语言/平台中使此功能成为一流的公民”。例如,关于C#/。net中的枚举的说法。那么,在编程语言/平台中,什么时候将某个功能视为“一流公民”?

64
Gulshan

定义

对象在以下情况下是一流的:

  • 可以存储在变量和数据结构中
  • 可以作为参数传递给子例程
  • 可以作为子例程的结果返回
  • 可以在运行时构造
  • 具有固有身份(与任何给定名称无关)

术语“对象”在这里被宽松地使用,不必在面向对象的编程中指代对象。最简单的标量数据类型(例如整数和浮点数)几乎总是一流的。

http://zh.wikipedia.org/wiki/First_class_object

42
Waquo

通常,这是指可以作为参数传递,可以定义为函数的返回类型或可以分配值的构造。通常,您需要能够在运行时构造它们。例如,一个类的实例在c ++或Java中将是一等公民,而在C中的函数则不是。

6
Pemdas

我想说的是,如果仅通过语言实现某项功能,则它就是一流的公民。
即它不需要多种语言功能或标准库即可实现该功能。

例:

在C/C++中,我不认为函数是一等公民(其他人可能是)。
这是因为有一些方法可以操纵语言直接支持的功能,但需要使用其他语言功能。不直接支持将参数绑定到函数,并且您必须构建函子才能实现此功能。

1
Martin York