最近在學(xué)習(xí)函數(shù)式編程,碰到了一個(gè)概念,叫 first class function,以前從來沒聽過,后來看了 R大(RednaxelaFX,偶像)的博客有寫到
類型:規(guī)定了變量可以取的值得范圍祠肥,以及該類型的值可以進(jìn)行的操作逃默。根據(jù)類型的值的可賦值狀況切心,可以把類型分為三類
- 1媚朦、一級(jí)的(first class)。該等級(jí)類型的值可以傳給子程序作為參數(shù)养晋,可以從子程序里返回温兼,可以賦給變量。大多數(shù)程序設(shè)計(jì)語(yǔ)言里帖族,整型栈源、字符類型等簡(jiǎn)單類型都是一級(jí)的。
- 2盟萨、二級(jí)的(second class)凉翻。該等級(jí)類型的值可以傳給子程序作為參數(shù),但是不能從子程序里返回捻激,也不能賦給變量制轰。
- 3、三級(jí)的(third class)胞谭。該等級(jí)類型的值連作為參數(shù)傳遞也不行垃杖。
在scala中,函數(shù)是可以作為參數(shù)來傳遞并且返回的,所以scala中的函數(shù)就是first class function
在java8中,增加了lambda表達(dá)式,實(shí)際上lambda表達(dá)式是一個(gè)function literal,可以作為參數(shù)傳遞,但是不能賦值給變量,所以只能成為second class function.