最近在学习函数式编程,碰到了一个概念,叫 first class function,以前从来没听过,后来看了 R大(RednaxelaFX,偶像)的博客有写到
类型:规定了变量可以取的值得范围,以及该类型的值可以进行的操作。根据类型的值的可赋值状况,可以把类型分为三类
- 1、一级的(first class)。该等级类型的值可以传给子程序作为参数,可以从子程序里返回,可以赋给变量。大多数程序设计语言里,整型、字符类型等简单类型都是一级的。
- 2、二级的(second class)。该等级类型的值可以传给子程序作为参数,但是不能从子程序里返回,也不能赋给变量。
- 3、三级的(third class)。该等级类型的值连作为参数传递也不行。
在scala中,函数是可以作为参数来传递并且返回的,所以scala中的函数就是first class function
在java8中,增加了lambda表达式,实际上lambda表达式是一个function literal,可以作为参数传递,但是不能赋值给变量,所以只能成为second class function.