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)
    }
    }
    }
    }

  • 相关阅读:
    黑产上演《三体》剧情:蠕虫病毒入侵手机群发“钓鱼”短信
    安天AVL联合小米MIUI首擒顽固病毒“不死鸟”
    阿里云存储OSS服务端签名客户端直传
    mariadb 安装配置
    NPOI 打印设置
    windows2008 r2 网络负载均衡搭建
    SqlServer数据库技巧
    达梦数据库备份还原
    ASP.NET CORE Docker发布记录
    DataReader转换
  • 原文地址:https://www.cnblogs.com/supersom/p/5100290.html
Copyright © 2011-2022 走看看