Spark基础-Scala函数式编程

核心
1、scala函数式编程

package com.xlucas

/**
  * Created by xlucas on 2017/8/14 0014.
  */

/**
  * 函数可以被简单的任务是一条或者几条语句的代码体,该代码体接收若干参数,经过代码体处理后返回结果,和数学中的f(x)=x+1
  * 在scala中函数是一等公民,可以向变量一样被传递,被赋值,同时函数可以赋值给变量,变量也可以赋值给函数,
  * 可以序列化和反序列化的直接好处就是函数可以在分布式系统上传递
  * 因为函数背后其实是类和对象,所以可以和普通的变量完全一样的应用在任何普通变量可以运用地方,包括作为参数传递,作为返回值,
  *
  * 1、def关键字来定义函数
  * 2、函数会自动进行类型推倒来判断函数返回值的类型,如果函数名称和函数体直接没有等于号的时候则类型推倒失败,此时函数返回类型是unit
  * 3、函数的参数可以是函数
  * 4、如果在函数体重无法推倒函数的类型,必须声明具体的类型
  * 5、函数的参数可以有默认值,这样在调用函数的时候如果不想改变默认值的话就直接不传递该参数而是直接使用默认值即可,
  * 6、我们可以基于函数的参数的名称来调整函数的传递参数的顺序
  * 7、函数中如果不确定传递参数的个数,可以使用变长参数的方式,传参时候的一个方便的语法是 :_*
  * 8、可变参数中的数据其实会被收集成为Array数组
  *
  *
  */
object ScalaFunction {
  def main(args: Array[String]): Unit = {
  println("hello spark")
    HellFun("spark",10)
    println(HellFun("spark",20))
    println(fibonacci(5))
    println( "sum+" +sum(1,2,3,4,5,6))
    println( "sum+" +sum(1 to 6:_*))
  }
  def HellFun(name:String,age :Int ) = {
    println("hello " +name)
    println("hello my age is "+age)
    age
  }

  def fibonacci(n:Long):Long={
    if(n<=1) 1
    else fibonacci(n-2)+fibonacci(n-1)
  }
  def sum(numbers : Int*)={
    var result=0
    for(number <- numbers) result +=number
    result
  }
}
/**
  *
  * 运行的结果 hello spark
hello spark
hello my age is 10
hello spark
hello my age is 20
20
8
sum+21
sum+21
 */

你可能感兴趣的:(scala)