函数式编程进阶

1、函数和变量一样作为Scala语言的一等公民,函数可以直接复制给变量;

2、函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是匿名函数赋值给一个变量(其实是val常量),Spark源码中大量存在这种语法;

3、函数可以作为参数直接传递给函数,这极大地简化的编程语法;

4、函数式编程一个非常强大的地方之一在于函数的返回值可以是函数,当函数的返回类型是函数的时候,这个时候就是表明Scala的函数是实现了闭包!

Scala壁报的内幕是:Scala的函数背后是类和对象,所以,Scala的参数都做为了对象的成员!所以后续可以继续访问

5、Currying,复杂的函数式编程中经常使用,可以维护变量在内存中的状态,且实现返回函数的链式功能,可以实现非常复杂的算法和逻辑;

1)以前java的防暑是new出一个接口实例,并且在接口实例的同调方法callback中来实现业务逻辑,现在是直接把同调方法callback传递给我的函数,且在函数体中直接使用,这毫无疑问的简化代码的编写,提升了开发的效率;

2)这种方式非常方便编写负责的业务逻辑和控制逻辑,对于图计算,计算机学习,深度学习等至关重要;

函数作为函数的参数传递的编程方式是称之为高阶函数的编程方式,Spark源码和应用程序开发至少60%都是这种代码!

object functionalProgramming{

//1、函数和变量一样作为Scala语言的一等公民,函数可以直接复制给变量

def mian(args:Array【String】);Unit={

val hiData = hiBigData -

hiDAta("Spark")

val f = (name:String)=>println("Hi,"+name)

f("Kafka")

def getName(func:(String)=>Unit,name:String){

func(name)

}

getName(f,"Scala")

Array(1 to 10: *).map{(item:Int)=>2*item}.foreach{x=>println(x)}

def funResult(message:String) = (name:String)=>println(message +":"+name)

funcResult("Hello")("Java")

val result=funcResult("Hello")

result("Java")

}

def hiBIgData(name:String){

println("Hi,"+name)

}

.

Spark函数式编程进阶的更多相关文章

  1. Scala实战高手****第12课:Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏

    /** * 函数式编程进阶: * 1.函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量 * 2.函数更常用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称 ...

  2. Scala函数式编程进阶

    package com.dtspark.scala.basics /** * 函数式编程进阶: * 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量: * 2, 函数更长用的方式 ...

  3. Python函数式编程(进阶2)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6411915.html 本文出自:[Edwin博客园] Python函数式编程(进阶2) 1. python把 ...

  4. Spring MVC 函数式编程进阶

    1. 前言 上一篇对 Spring MVC 的函数式接口编程进行了简单入门,让很多不知道的同学见识了这种新操作.也有反应这种看起来没有传统写法顺眼,其实大家都一样.但是我们还是要敢于尝试新事物.Jav ...

  5. Spark菜鸟学习营Day3 RDD编程进阶

    Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...

  6. Python进阶:函数式编程实例(附代码)

    Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...

  7. Python进阶 函数式编程和面向对象编程等

    函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数: ...

  8. Python进阶之函数式编程

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  9. 洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”

    匿名函数进阶 前一章已经说了匿名函数,匿名函数还可以和其他内置函数结合使用 1.map map():映射器,映射 list(map(lambda x:x*2,range(10))) #把range产生 ...

随机推荐

  1. 【干货】从windows注册表读取重要信息-----这种技能非常重要,占电子取证的70%

    也就是说,当我拿着U盘启动盘,从你电脑里面拷贝了注册表的几个文件,大部分数据就已经到我手中了.一起来感受一下吧. 来源:Unit 6: Windows File Systems and Registr ...

  2. 【转】Python之日期与时间处理模块(date和datetime)

    [转]Python之日期与时间处理模块(date和datetime) 本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常 ...

  3. Faster rcnn代码理解(2)

    接着上篇的博客,咱们继续看一下Faster RCNN的代码- 上次大致讲完了Faster rcnn在训练时是如何获取imdb和roidb文件的,主要都在train_rpn()的get_roidb()函 ...

  4. Ex 6_3 修建酒店所获得的利润..._第五次作业

    假设profit[i]为在前i个位置修建酒店所获得的最大利润,当i=0时,profit[0]=0.当i>0时,若j为上一个满足m[i]-m[j]k的位置.若profit[i-1]>prof ...

  5. Android学习笔记————利用JDBC连接服务器数据库

    /******************************************************************************************** * auth ...

  6. mac安装navicat mysql破解版

    下载破解中文版http://m6.pc6.com/xuh6/navicat12027pre.zip 完成下载后无法正常进行安装,此时应该打开命令行执行 sudo spctl --master-disa ...

  7. -webkit-line-clamp 限制多行文字

    一.应用 CSS代码: .box { width: 100px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: ve ...

  8. 关于引用外部类要用static 的问题

    一.直接用 static 引用 import static net.mindview.util.Print.*; //net...为引用的类,此方法在程序加载时就已实例化 二. 也可以手动在需要时实例 ...

  9. 使用caffe模型测试图片(python接口)

    1.加载相关模块 1.1 加载numpy import numpy as np 1.2 加载caffe 有两种方法. 方法一(静态导入): 找到当前环境使用的python的site-packages目 ...

  10. 性能测试十三:linux常用命令

    常用的linux命令: 目录类/ 根目录. 当前目录.. 上级目录cd / 进入根目录cd .. 进入上级目录ls 查看当前目录下的所有文件ll 查看当前目录下所有文件的详细信息pwd 显示当前目录的 ...