scala函数式编程

scala函数式编程

1.非匿名函数

 //定义一个函数
 //将函数赋值给一个变量 注意赋值时的下划线
 //直接使用变量即可

 def fun1(name : String ){println(name)}
 val fun1_v = fun1 _ // _代表函数本身
 fun1_v("hello function")

2.匿名函数

 //定义一个匿名函数以及输入
 //将函数赋值给一个变量 
 //直接使用变量即可

 val fun2 = (content :String)=>
 println(content)//=>代表处理过程
 fun2("hadoop")

3.高阶函数

//函数的参数为另外一个函数
 def hiScala= (content :String )=>println(content)
 def bigData (func:String =>Unit,content:String) {func(content)}
 bigData(hiScala,"hiScala")

//函数的返回值为另外一个函数
 def func_Returned(content:String)=(message : String)=>println(content+"  "+ message)
 val returned = func_Returned("spark")
 returned("scala")

5.闭包

//函数执行完成后里面的变量仍然可以使用
//函数作用域外仍然可以访问变量
scala>  def func_Returned(content:String)=(message : String)=>println(content+"
 "+ message)
func_Returned: (content: String)String => Unit

scala>  val returned = func_Returned("spark")
returned: String => Unit = <function1>

scala>  returned("scala")
spark  scala

6.map操作

//map操作会遍历所有元素

 val list = List("a","b","c")
 val cal = list.map("this is "+_) 
 cal.flatMap(_.split(" "))

7.颗粒化

//颗粒化使用了闭包的功能
// (1 to 100).reduceLeft(_+_)为颗粒化的代表
scala> def sum (x:Int ,y:Int)= x+y
sum: (x: Int, y: Int)Int

scala> sum (1,2)
res4: Int = 3

scala> def sumCurrying(x:Int)=(y:Int)=>x+y
sumCurrying: (x: Int)Int => Int

scala> sumCurrying(2)(1)
res5: Int = 3

scala> def sumCurrying_better(x:Int)(y:Int)=x+y
sumCurrying_better: (x: Int)(y: Int)Int

scala> sumCurrying_better(1)(2)
res6: Int = 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值