• 第3课 Scala函数式编程彻底精通及Spark源码阅读笔记


    本课内容:
    1:scala中函数式编程彻底详解
    2:Spark源码中的scala函数式编程
    3:案例和作业

    函数式编程开始:
    def fun1(name: String){
    println(name)
    }

    //将函数名赋值给一个变量,那么这个变量就是一个函数了。
    val fun1_v = fun1_

    访问 fun1_v("Scala")

    结果:Scala

    匿名函数:参数名称用 => 指向函数体
    val fun2=(content: String) => println(content)
    fun2

    高级函数:
    一:函数的参数也是函数,如下
    def bigData(func: (String) =>Unit,content: String){ //输入参数是String,返回的类型是unit
    func(content)
    }

    bigData(fun1_v,"Spark")

    //结果 Spark

    二:函数的返回值也是函数
    def func_Returned(content: String) = (message: String) => println(content + " "+message)
    val returned =func_Returned("Spark")
    returned("Scala")
    结果:Spark Scala

    三:数组中的高级函数
    array.map(2*_)

    四:函数闭包 函数超出了作用域之后,依然可以访问
    def scala(content: String) = (message: String) => println(content + ":" + message)
    val funcResult=scala("Spark")
    funcResult("Flink")
    //结果 Spark : Flink

    //柯里化 *****
    def sum(x: Int,y: Int) = x+y
    转为
    def sum_Currying(x: Int) =(y: Int) = x+y
    sum_Currying(1)(3)
    //结果 4

    作业:统计一个文件夹下面所有的单词出现的总次数(应用了函数式编程,集合的知识点)

    object HelloScala {
    def main(args: Array[String]) {
    ScanParseAllFile()
    }

    def ScanParseAllFile() {
    val arrBuffer = ArrayBuffer[String]()
    var i = 0;
    val files = (new File("D:/wangs/lepus/src/com/huawei/lepus/activity/manager/ats")).listFiles()
    for (file <- files) {
    if (file.isFile()) {
    val f = Source.fromFile(file)
    for (line <- f.getLines()) {
    //line.split("[,:.!\s?*\/-=+]()><")
    for (key <- line.split('.')) {
    i += 1;
    arrBuffer += key;
    }
    }
    }
    for (fileName <- arrBuffer) {
    println(fileName)
    }
    }
    }
    }

  • 相关阅读:
    socket
    RBAC
    CMOS和BIOS
    canvas和SVG
    兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面
    HTML标签marquee实现滚动效果
    百度判断手机终端并自动跳转uaredirect.js代码及使用实例
    JavaScript中常用的事件
    解决windows server 2008 r2 登录进入桌面只显示一片蓝色背景
    ng2自定义管道
  • 原文地址:https://www.cnblogs.com/supersom/p/5100290.html
Copyright © 2020-2023  润新知