第一類物件
维基百科,自由的百科全书
第一類物件(英语:First-class object)在電腦科學中指可以在執行期創造並作為參數傳遞給其他函數或存入一個變數的實體[1]。將一個實體變為第一類物件的過程叫做「物件化」(Reification)[2]。
「第一類物件」這一名稱最早由Christopher Strachey在1960年代發明,原稱「第一類公民」(First-class citizen),意指函數可作為電腦語言中的第一類公民。英文中也稱「First-class entity」或「First-class value」。
定義 [编辑]
第一類物件不一定是物件導向程式設計所指的物件,而可以指任何程式中的實體。一般第一類物件所特有的特性為:
- 可以被存入變數或其他結構
- 可以被作為參數傳遞給其他函數
- 可以被作為函數的返回值
- 可以在執行期創造,而無需完全在設計期全部寫出
- 即使沒有被繫結至某一名稱,也可以存在
範例 [编辑]
絕大多數語言中,數值與基礎型別都是第一類物件,然而不同語言中對函數的區別很大,例如C語言與C++中的函數不是第一類物件,因為在這些語言中函數不能在執行期創造,而必須在設計時全部寫好。相比之下,Scheme中的函數是第一類物件,因為可以用lambda語句來創造匿名函數並作為第一類物件來操作。
註釋 [编辑]
- ^ Scott, Michael. Programming Language Pragmatics. San Francisco, CA: Morgan Kaufmann Publishers. 2006. 140.
- ^ J. Malenfant, M. Jacques and F.-N. Demers. A Tutorial on Behavioral Reflection and its Implementation. parc.com. [2010-10-09].