scala-函数式编程

函数基础编程:
1、函数与方法区别(类中的函数称之方法,其他都叫函数(包括在方法中定义的也叫函数),函数可以作为对象传递并且函数可以嵌套定义,方法有重载重写的概念,函数没有)
2、常见函数类型:无参无返回值、无参有返回值、有单参无返回值、有单参有返回值、有多参无返回值、有多参有返回值
3、函数参数:可变参数(一般放参数列表最后)、参数默认值、带名参数(指定 参数名=xxx)

注意:可变参数与参数默认值不能共同出现在参数列表中
4、函数至简原则:
(1)return 可以省略,Scala 会使用函数体的最后一行代码作为返回值
(2)如果函数体只有一行代码,可以省略花括号
(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)
(4)如果有 return,则不能省略返回值类型,必须指定
(5)如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用
(6)Scala 如果期望是无返回值类型,可以省略等号
(7)如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
(8)如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
(9)如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略
高阶函数编程:
1、高阶函数
(1)函数可以作为值进行传递
(2)函数可以作为参数进行传递(函数作为参数传递时,最好加下划线进行区分)
(3)函数可以作为一个函数的返回值返回
2、匿名函数
(1)参数的类型可以省略,会根据形参进行自动的推导
(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过 1 的永远不能省略圆括号。 
(3)匿名函数如果只有一行,则大括号也可以省略
(4)如果参数只出现一次,则参数省略且后面参数可以用_代替
3、闭包$函数柯里化
闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包
函数柯里化:把一个参数列表的多个参数,变成多个参数列表,其实就是将复杂的参数逻辑变得简单化,函数柯里化一定存在闭包(def f3()(b:Int))
4、递归函数:一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用
5、控制抽象:
(1)值调用:把计算后的值传递过去,只输出值
(2)名调用:把代码传递过去,根据传入的本身代码执行情况输出,例如:f1函数传入f2函数,那么输出的时f2函数本身代码的内容
注意:在Java中只有值调用;Scala 既有值调用,又有名调用。
6、惰性加载:当函数返回值被声明为 lazy 时,函数的执行将被推迟,直到我们首次对此取值(输出、使用等情况下),该函数才会执行。这种函数我们称之为惰性函数
注意:lazy 不能修饰 var 类型的变量

你可能感兴趣的:(大数据编程之scala,scala,开发语言,后端)