Scala的函数式编程(scala,函数式,编程,开发技术)

时间:2024-05-05 17:20:24 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

Scala的函数式编程

  Scala的函数式编程的特点

   - 高阶函数
   - 闭包
   - 模式匹配 可参考:https://blog.51cto.com/14048416/2337136
   - 单一赋值
   - 延迟计算
   - 类型推导
   - 尾部调用优化
   - 隐式转化
  这篇博文重点介绍:高阶函数、闭包、隐式转化

1. 高阶函数

   高阶函数主要有两种:将一个函数当做另外一个函数的参数返回值是函数的函数

2. 闭包

 闭包是一个函数,返回值依赖与声明在函数外部的一个或者多个变量。
 闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另一个函数。
例:

object Test01 { def main(args: Array[String]): Unit = { //定义一个闭包函数 def bibao() ={ var num:Int=0 //在闭包函数中定义一个函数,用于修改变量num的值 val add=(x:Int)=>{ num+=x num } //最终将这个函数返回 add } val result=bibao() println(result(1)) //1 println(result(2)) //3 println(result(3)) //6 }}

 通过上面的案例我们了解到:每一次在调用result实际上是调用bibao方法中的add函数,然后对bibao方法中的num变量进行叠加,实现了使用另一个函数,访问其他方法中的局部变量的功能,这个就是闭包。当bibao调用的时候,就会申请一块内存区间,存储了add和num变量,bibao这个函数当被调用的时候,就返回了内存的一个函数add,调用的时候,result(1),相当于add(2),num的值就会被返回。当然如果重新调用一次bibao方法,这个num变量会被重新初始化。
闭包的弊端 : 在一个线程中,或者一个程序中,不能太多的定义这样的闭包函数,定义闭包函数时,其中的局部变量一定不能太大。因为闭包中的局部变量时常驻内存的,一旦定义之后,就一直在内存中,除非程序终止。

3. 隐式转化

scala的神奇之处:之前有过1 to 10 其实可以写成 1.to(10),那其实就是表示:1 是一个 Int 类型的变量,所以证明 Int 类中会有一个 to 的方法,但事实上,我们在 Int 类型中根本就没有寻找 to 方法,那也就是说对一个 Int 类型的变量 1 调用 Int 类型不存在的一个方法,这怎么还能正常运行 呢? 隐式转换
dome01:

object Test01 { def main(args: Array[String]): Unit = { //定义一个传入两个Int类型的方法 def m1(x:Int,y:Int):Int ={ x+y } //定义一个Double的转换成 Int类型 方法,隐式转化引入这个方法 implicit def m2(x:Double) = x.toInt //调用m1,并传入double类型的值 println(m1(3.5,2.6)) //没有报错,正常打印 }}

dome02:
Scala的函数式编程

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Scala的函数式编程的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:vbs操作offfice文档下一篇:

13 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18