大数据系列修炼-Scala课程07
由于昨天下班后有点困,就没有来及写博客,今天会把它补上!把这个习惯坚持下去!
关于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相关推荐
- 大数据系列修炼-Scala课程65
大数据系列修炼-Scala课程65 核心内容:Scala中的隐式转换操作规则与如何更好的使用隐式转换操作代码实战 1.Scala中的隐式转换操作规则与如何更好的使用隐式转换操作代码实战 1>Sc ...
- 大数据系列修炼-Scala课程96(2)
大数据系列修炼-Scala课程96(2) 核心内容: 1.Akka第一个案例动手实战代码总结 1.Akka第一个案例动手实战代码总结 Akka案例之WordCount完整代码: import akka ...
- 大数据系列修炼-Scala课程101
大数据系列修炼-Scala课程101 核心内容: 1.使用SBT开发Akka第一个案例源码解析MapActor.ReduceActor.AggregateActor 1.使用SBT开发Akka第一个案 ...
- 大数据系列修炼-Scala课程05
核心内容: 1.Map实战 2.Tuple实战 3.zip操作实战 1.Map实战 (1)Map映射在实际中用的非常广泛,通常用到的配置信息都是以映射的方式来呈现的,即以键值对的方式来呈现 (2)Ma ...
- 23篇大数据系列(二)scala基础知识全集(史上最全,建议收藏)
作者简介: 蓝桥签约作者.大数据&Python领域优质创作者.管理多个大数据技术群,帮助大学生就业和初级程序员解决工作难题. 我的使命与愿景:持续稳定输出,赋能中国技术社区蓬勃发展! 大数据系 ...
- 深圳大数据学习:Scala系列之文件以及正则表达式
深圳大数据学习:Scala系列之文件以及正则表达式 7.1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息. import scala.io.Source ob ...
- 曹长树:江湖小虾米的侠客行——我的大数据能力修炼得道之路 | 提升之路系列...
导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的"π"型人才,由清华大学研究生院.清华大学大数据研究中心及相关院系共 ...
- 《IT十八掌大数据内功修炼到企业实战2.0》全套视频2
<IT十八掌大数据内功修炼到企业实战2.0课程>免费自学马拉松计划 1.关于十八掌 学了大数据,还是不敢找工作? 内功不够!跟随十八掌掌门徐培成炼内功! 十八掌教育努力打造一套地表最 ...
- 23篇大数据系列(一)java基础知识全集(2万字干货,建议收藏)
大数据系列爽文,从技术能力.业务基础.分析思维三大板块来呈现,你将收获: ❖ 提升自信心,自如应对面试,顺利拿到实习岗位或offer: ❖ 掌握大数据的基础知识,与其他同事沟通无障碍: ❖ 具备一定的 ...
最新文章
- 你走对Linux学习之路了吗?
- git 无法拉取项目,本地ping不通github的解决办法(详解)
- android preference tab,Android SharedPreference - TabHost问题
- 重学java基础第二十三课:java基础 注释
- 使用中断后不停止_仓鼠偷吃鼠粮,被发现后立刻停止,但鼠鼠满脸不情愿
- idea中,springboot项目部署到docker
- lucene3.0_IndexSearcher排序
- Android学习笔记06---电话拨号器的制作:项目结构深化
- BiliBili后台源码45MB全部泄露,中奖概率写在注释里,密码硬编码,看懂了你就欧气满满(提供下载)!
- 拼多多打印订单有哪些软件?哪个软件好用呢?
- 西南科技大学OJ题 Delete Numbers 0700
- C语言除法向上、向下取整
- CentOS 7各版本镜像合集下载
- mui mysql_mui框架使用心得
- 重装系统显示未找到任何音频输出设备
- 超强媒体阵容护航,第一届区块链技术及应用峰会(BTA)·中国引爆开年狂潮
- ppgs_extractor_10ms_sch_lh_xx封装接口
- c++中 int、long、long long等取值范围
- Windows时钟同步(时间同步)问题
- 主流嵌入式操作系统介绍(一)
热门文章
- 建高性能ASP.NET站点 第五章—性能调优综述(中篇)
- MemCache在Windows环境下的搭建及启动
- [java]OutOfMemoryError 原因及解决办法
- Kooboo CMS - Html.FrontHtml.Position 详解
- Linux文件系统只读Read-only file system
- 黄聪:分享 SQL Server 2005 分区实现教程
- Kubernetes — kubectl 的基本使用
- Linux Kernel TCP/IP Stack — L7 Layer — Application Socket I/O 接口类型
- Openstack组件部署 — Nova_Install and configure a compute node
- 使用VScode开发ESP8266,PlatformIO开发ESP8266