简介:
本篇文章主要是对Scala高阶函数,闭包,颗粒化,集合讨论。
Scala函数式编程
Scala中的函数的可以不依赖类或则借口,独立存在,甚至函数可以作为参数传递,可以直接赋值给变量。
Scala的函数式编程使得算法的设计可以更高效更精简,因为函数式是依赖人们的思考 方式构建的。
Scala的函数式编程是的开发代码行数更少。
Spark中的代码几乎所有都是用函数式编写的,集合的函数式编程更是重中之重,以及基于集合的函数式操作。
高阶函数:
如果一个函数是一个函数的参数则称为此函数为高阶函数
高阶函数是scala与java的最大不同。
函数的赋值给变量
scala> def fun1(name : String){println(name)} //fun1为函数的名称,(name:String)参数 Unit是返回值为Unit fun1: (name: String)Unit //现在将函数赋值给变量 //val fun1_v = fun1 _ //函数名 _ 中间一定要加空格 //这时候的fun1_v就是函数了 scala> val fun1_v = fun1 _ //fun1 _ 此时就表示函数本身了 //此时我们看出fun1_v就是函数了,参数的类型是String类型,返回值是Unit // => 是将左边的参数进行右边的加工。 fun1_v: String => Unit = <function1> scala> fun1("Spark") Spark
scala> fun1_v("Spark") Spark
scala> fun1_v("Scala") Scala
匿名函数 在实际工作的时候,比如算法设计我们可能不需要函数名称,只需要函数执行的功能就可以了,这时候我们就会使用匿名函数。 但是我们要使用它,就可以借助函数赋值给变量,变量就变成了函数的性质,将匿名函数赋值给变量。 匿名函数的定义规则: (参数 :类型) => 函数的操作 scala> val fun2 = (content : String) => println(content) fun2: String => Unit = <function1>
|