03 3000门徒 第三课 SCALA函数式编程彻底精通及SPARK源码阅读

一、函数1. 函数定义

def func1(name:String)={

println(name)

}2. 函数赋值给变量

def func1(name:String)={

println(name)

}

val f1=func1_

f1("spark" ) 3. 函数的参数是函数

//f1是函数参数传入double 返回double

def func1(f1:(Double)=>Double)=f1(100.55)

def f11(x:Double):Double={

if (x>10.0) 1.0else 0.0

}

println(func1(scala.math.ceil_))

println(func1(f11))

4. 匿名函数定义

def func1(f1:(Double)=>Int,x:Double)=f1(x)//(y:Double)=>y.toInt是匿名函数

val r =func1((y:Double)=>y.toInt,1.666)

println(r )

5. 函数的返回值也可以是函数

def mulby(x:Int)=(y:Int)=>x*y

println(mulby(2)(3)) 6. 高阶函数的类型推断

def func1(f1:(Double)=>Double,x:Double)=if (f1(x)>100) 1else 0

//只有一个参数可以推断X类型

func1((x)=>3*x,2.22)

//可以省略x的括号

func1(x=>3*x,2.22)

//如果在函数右边只出现一次参数可以直接用_

func1(3*_,2.22)

03 3000门徒 第三课 SCALA函数式编程彻底精通及SPARK源码阅读的相关文档搜索

相关文档