zoukankan      html  css  js  c++  java
  • 第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)
    }
    }
    }
    }

  • 相关阅读:
    火狐浏览器插件开发工具
    MyEclipse设置JSP页面默认编码方式
    如何让editplus保存时不生成.bak备份文件
    Sublime Text 2 使用心得
    火狐浏览器的一些常用设置
    能帮你提高工作效率的10个在线工具
    如何治疗颈椎病
    企业架构研究总结(2)——问题的由来和基本概念
    企业架构研究总结(1)——参考资料列表
    企业架构研究总结(4)——企业架构与企业架构框架概论
  • 原文地址:https://www.cnblogs.com/supersom/p/5100290.html
Copyright © 2011-2022 走看看