由于昨天下班后有点困,就没有来及写博客,今天会把它补上!把这个习惯坚持下去!

关于Scala高阶函数详解

  1.Scala高阶函数代码实现:高阶函数就是在我们函数中套用函数

  2.高阶函数代码详解:高阶函数能够让方法的调用更加便捷

  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet//(1 to 9)数组中的map方法向数组中放* 用foreach用于来循环 println _ 表示函数,把函数当做参数进行传递(1 to 9).map("*" * _).foreach(println _)        //> *//| **//| ***//| ****//| *****//| ******//| *******//| ********//| *********//过滤后被2整除的遍历  println也当做参数进行传递这就是高阶函数(1 to 9).filter(_ % 2 == 0) .foreach(println)   //> 2//| 4//| 6//| 8//_*_代表数组中两个数据相乘 也属于高阶函数println((1 to 9).reduceLeft(_ * _))             //> 362880//把字符串用空格分割在按照长度排序"Spark is the most exciting thing happening in big data today".split(" ").sortWith(_.length < _.length).foreach(println)//> is//| in//| the//| big//| most//| data//| Spark//| thing//| today//| exciting//| happening//ceil函数表示向上取值val fun = ceil _                               //> fun  : Double => Double = <function1>val num = 3.14                                 //> num  : Double = 3.14fun(num)                                       //> res0: Double = 4.0Array(3.14, 1.42, 2.0).map(fun)//fun函数当做函数传递   //> res1: Array[Double] = Array(4.0, 2.0, 2.0)//函数表示三的倍数val triple = (x: Double) => 3 * x             //> triple  : Double => Double = <function1>Array(3.14, 1.42, 2.0).map((x: Double) => 3 * x)//> res2: Array[Double] = Array(9.42, 4.26, 6.0)Array(3.14, 1.42, 2.0).map{ (x: Double) => 3 * x }//> res3: Array[Double] = Array(9.42, 4.26, 6.0)//定义高阶函数def high_order_functions(f: (Double) => Double) = f(0.25)//> high_order_functions: (f: Double => Double)Doubleprintln(high_order_functions(ceil _))         //> 1.0println(high_order_functions(sqrt _))         //> 0.5//函数相乘def mulBy(factor: Double) = (x: Double) => factor * x//> mulBy: (factor: Double)Double => Doubleval quintuple = mulBy(5)                      //> quintuple  : Double => Double = <function1>println(quintuple(20))                        //> 100.0//3的倍数解析println(high_order_functions((x: Double) => 3 * x))//> 0.75high_order_functions((x) => 3 * x)            //> res4: Double = 0.75high_order_functions(x => 3 * x)              //> res5: Double = 0.75
    println(high_order_functions(3 * _))          //> 0.75
    val fun2 = 3 * (_: Double)                    //> fun2  : Double => Double = <function1>val fun3: (Double) => Double = 3 * _          //> fun3  : Double => Double = <function1>

Scala中SAM转换讲解

  1.SAM的意义:隐式的转换

  2.SAM转换详解

  var data = 0val frame = new JFrame("SAM Testing");val jButton = new JButton("Counter")jButton.addActionListener(new ActionListener {override def actionPerformed(event: ActionEvent) {data += 1println(data)}})//隐式函数就把一些函数定义,好比java中的函数定义模块-->这就可以隐式转换implicit def convertedAction(action: (ActionEvent) => Unit) = new ActionListener {override def actionPerformed(event: ActionEvent) { action(event) }}//这样是写代码的时候只关心业务逻辑,没有必要去编写没有关系的代码,直接写所需的结果  jButton.addActionListener((event: ActionEvent) => {data += 1; println(data)})//这跟java中的gui编程一样
    frame.setContentPane(jButton);   frame.pack();  frame.setVisible(true);  

Scala中curring讲解

  1.curring的定义:curring颗粒度,就是把参数简化成一个参数进行操作,返回后把另外进行计算

  2.curring在项目中重要性:在公式的推到中和计算中相当重要

    //curring颗粒度,就是把参数简化成一个参数进行操作,返回后把另外进行计算def multiple(x: Int, y: Int) = x * ydef multipleOne(x: Int) = (y: Int) => x * yprintln(multipleOne(6)(7))//可以把以上的计算方式该项为下面的方法def curring(x: Int)(y: Int) = x * yprintln(curring(10)(10))val a = Array("Hello", "Spark")val b = Array("hello", "spark")//比较两个变量的是否相等println(a.corresponds(b)(_.equalsIgnoreCase(_)))

Scala中模式匹配入门讲解

  1.模式匹配分析:Scala中匹配模式比较灵活,可以传入参数和函数等

  2.在模式匹配中使用守卫:接下的blog中会深入讲解

  3.模式匹配中的变量使用

  //模式匹配在java中用switch来表示,这里面限制不是很多,int,byte,char,shortval data =2data match {case 1 => println("First")case 2 => println("Second")case _ => println("Not Known Number")}//Scala中case中可以用条件函数也可以是函数,也可以传参数val result = data match {case i if i == 1 => "The First"case number if number ==2 => "The Second" + numbercase _ => "Not Known Number"}println(result)  "Spark !" foreach { c => println (c match {case ' ' => "space"case ch => "Char: " + ch})}

这就是拖欠任务,今天会再写一篇关于Scala的学习!希望大家关注王家林老师的微信(18610086859),他会每天都更新大数据的视频!

最新大数据视频74讲:http://pan.baidu.com/s/1hqJByvU

本文百度云地址23-26讲:http://pan.baidu.com/s/1bOsSQ

转载于:https://www.cnblogs.com/524646016-zhang/p/zhangsh_dt_scala_07.html

大数据系列修炼-Scala课程07相关推荐

  1. 大数据系列修炼-Scala课程65

    大数据系列修炼-Scala课程65 核心内容:Scala中的隐式转换操作规则与如何更好的使用隐式转换操作代码实战 1.Scala中的隐式转换操作规则与如何更好的使用隐式转换操作代码实战 1>Sc ...

  2. 大数据系列修炼-Scala课程96(2)

    大数据系列修炼-Scala课程96(2) 核心内容: 1.Akka第一个案例动手实战代码总结 1.Akka第一个案例动手实战代码总结 Akka案例之WordCount完整代码: import akka ...

  3. 大数据系列修炼-Scala课程101

    大数据系列修炼-Scala课程101 核心内容: 1.使用SBT开发Akka第一个案例源码解析MapActor.ReduceActor.AggregateActor 1.使用SBT开发Akka第一个案 ...

  4. 大数据系列修炼-Scala课程05

    核心内容: 1.Map实战 2.Tuple实战 3.zip操作实战 1.Map实战 (1)Map映射在实际中用的非常广泛,通常用到的配置信息都是以映射的方式来呈现的,即以键值对的方式来呈现 (2)Ma ...

  5. 23篇大数据系列(二)scala基础知识全集(史上最全,建议收藏)

    作者简介: 蓝桥签约作者.大数据&Python领域优质创作者.管理多个大数据技术群,帮助大学生就业和初级程序员解决工作难题. 我的使命与愿景:持续稳定输出,赋能中国技术社区蓬勃发展! 大数据系 ...

  6. 深圳大数据学习:Scala系列之文件以及正则表达式

    深圳大数据学习:Scala系列之文件以及正则表达式 7.1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息. import scala.io.Source ob ...

  7. 曹长树:江湖小虾米的侠客行——我的大数据能力修炼得道之路 | 提升之路系列...

    导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的"π"型人才,由清华大学研究生院.清华大学大数据研究中心及相关院系共 ...

  8. 《IT十八掌大数据内功修炼到企业实战2.0》全套视频2

    <IT十八掌大数据内功修炼到企业实战2.0课程>免费自学马拉松计划   1.关于十八掌 学了大数据,还是不敢找工作?  内功不够!跟随十八掌掌门徐培成炼内功! 十八掌教育努力打造一套地表最 ...

  9. 23篇大数据系列(一)java基础知识全集(2万字干货,建议收藏)

    大数据系列爽文,从技术能力.业务基础.分析思维三大板块来呈现,你将收获: ❖ 提升自信心,自如应对面试,顺利拿到实习岗位或offer: ❖ 掌握大数据的基础知识,与其他同事沟通无障碍: ❖ 具备一定的 ...

最新文章

  1. 你走对Linux学习之路了吗?
  2. git 无法拉取项目,本地ping不通github的解决办法(详解)
  3. android preference tab,Android SharedPreference - TabHost问题
  4. 重学java基础第二十三课:java基础 注释
  5. 使用中断后不停止_仓鼠偷吃鼠粮,被发现后立刻停止,但鼠鼠满脸不情愿
  6. idea中,springboot项目部署到docker
  7. lucene3.0_IndexSearcher排序
  8. Android学习笔记06---电话拨号器的制作:项目结构深化
  9. BiliBili后台源码45MB全部泄露,中奖概率写在注释里,密码硬编码,看懂了你就欧气满满(提供下载)!
  10. 拼多多打印订单有哪些软件?哪个软件好用呢?
  11. 西南科技大学OJ题 Delete Numbers 0700
  12. C语言除法向上、向下取整
  13. CentOS 7各版本镜像合集下载
  14. mui mysql_mui框架使用心得
  15. 重装系统显示未找到任何音频输出设备
  16. 超强媒体阵容护航,第一届区块链技术及应用峰会(BTA)·中国引爆开年狂潮
  17. ppgs_extractor_10ms_sch_lh_xx封装接口
  18. c++中 int、long、long long等取值范围
  19. Windows时钟同步(时间同步)问题
  20. 主流嵌入式操作系统介绍(一)

热门文章

  1. 建高性能ASP.NET站点 第五章—性能调优综述(中篇)
  2. MemCache在Windows环境下的搭建及启动
  3. [java]OutOfMemoryError 原因及解决办法
  4. Kooboo CMS - Html.FrontHtml.Position 详解
  5. Linux文件系统只读Read-only file system
  6. 黄聪:分享 SQL Server 2005 分区实现教程
  7. Kubernetes — kubectl 的基本使用
  8. Linux Kernel TCP/IP Stack — L7 Layer — Application Socket I/O 接口类型
  9. Openstack组件部署 — Nova_Install and configure a compute node
  10. 使用VScode开发ESP8266,PlatformIO开发ESP8266