大数据系列修炼-Scala课程06
关于Scala中的正则表达式与模式匹配结合的正则表达式Reg
正则表达式的实现:正则表达式的定义与其它语言差不多,只需在表达式后加一个.r,并且可以遍历相应的表达式进行匹配
//定义的正则表达式
val regex="""([0-9]+) ([a-z]+)""".r //由数字与字母组成的常量
val numPattern = "[0-9]+".r //由数字组成的常量
val numberPattern = """\s+[0-9]+\s+""".r //由s与数字+s组成的正则表达式
println(regex);
// findAllIn方法返回遍历所有匹配项的迭代器
for (matchString <- numPattern.findAllIn("99345 Scala, 22298 Spark")) println(matchString)
// 找到首个匹配项
println(numberPattern.findFirstIn("99ss java, 222 hadoop"))
与模式匹配结合的Reg实现:在今后可能会经常使用正则表达式与模式匹配进行组合
//正则表达式与模式匹配结合
val numitemPattern="""([0-9]+) ([a-z]+)""".r //正则表达式
val numitemPattern(num, item) = "99 hadoop" //规定模式
val line = "93459 spark"
line match{
case numitemPattern(num, blog) => println(num + "\t" + blog)
case _ => println("Oops...")
}
Scala中本地函数与一等公民函数
本地函数实现:就是函数中包括函数,这样使函数更加安全。
//本地函数 就是函数中包含函数 这样就可以使里面的函数使用外面函数的参数
def processData(filename: String, width: Int) {
def processLine(line: String) {
if (line.length > width)
println(filename +": "+ line)
}
val source = Source.fromFile(filename)
for (line <- source.getLines)
processLine(line)
}
}
作为一等公民函数实现;能让函数表示式能够更加方便的在编程中使用
//一等公民函数
def main(args: Array[String]): Unit = {
//启动项中设置的参数
val width = args(0).toInt
for (arg <- args.drop(1))
processData(arg, width)
var increase = (x: Int) => x + 1
println(increase(10))
increase = (x: Int) => x + 9999
val someNumbers = List(-11, -10, -5, 0, 5, 10)
//遍历数组
someNumbers.foreach((x: Int) => print (x))
println
//过滤大于0
someNumbers.filter((x: Int) => x > 0).foreach((x: Int) => print (x))
println
//过滤大于0
someNumbers.filter((x) => x > 0).foreach((x: Int) => print (x))
println
//过滤大于0
someNumbers.filter(x => x > 0).foreach((x: Int) => print (x))
println
//过滤大于0
someNumbers.filter(_ > 0).foreach((x: Int) => print (x))
println
//定义两个数字相加
val f = (_: Int) + (_: Int)
println(f(5, 10)) }
Scala中偏函数讲解
偏函数实现:偏函数能够让表达式更加简洁,没有必要写多余的参数
偏函数解析:偏函数实现的时候会生成对于的apply函数来进行相应的操作
val data = List(1, 2, 3, 4, 5, 6)
//使用偏函数来遍历list 使用空格+_
data.foreach(println _)
data.foreach(x => println(x))
def sum(a: Int, b: Int, c: Int) = a + b + c
println(sum(1, 2, 3))
val fp_a = sum _
//直接调用定义sum函数 ,调用它相应的apply函数
println(fp_a(1, 2, 3))
println(fp_a.apply(1, 2, 3))
val fp_b = sum(1, _: Int, 3)
println(fp_b(2))
println(fp_b(10))
data.foreach(println _)
data.foreach(println)
Scala中关于闭包讲解
Scala闭包解析:让函数体用简单的表达式来实现冗余的事情
Scala闭包实现
def main(args: Array[String]) {
val data = List(1, 2, 3, 4, 5, 6)
var sum = 0
data.foreach(sum += _)
def add(more: Int) = (x: Int) => x + more
val a = add(1)
val b = add(9999)
println(a(10))
println(b(10)
Scala的函数式编程真的是博大精深啊,很多东西都被他的底层所实现了,这让我们在使用过程中能更加简洁了。今天就到这儿
欢迎大家观看 王家林老师的大数据相关视频....
王家林微信号:18610086859
最新视频72讲:http://pan.baidu.com/s/1qWsq6Jy
该博客的视频19-22讲:http://pan.baidu.com/s/1o63QbPo
大数据系列修炼-Scala课程06的更多相关文章
- 大数据系列修炼-Scala课程01
简介 由于本人刚毕业,也是从事软件开发相关的工作.想再学习一下关于大数据.移动互联网.云计算相关的技术.为我的未来打好基础.并且从零开始学习大数据相关的知识,脚踏实地的走好每一步,听行业前辈说毕业生刚 ...
- 大数据系列修炼-Scala课程03
前言 今天上班看了很多关于前端js,jQuery.bootstrap.js以及springMVC看得迷迷糊糊的,毕竟以前很少去学习前端的技术,所有看得有点困,还好看得比较多,回家后也开始学习关于Sca ...
- 大数据系列修炼-Scala课程07
由于昨天下班后有点困,就没有来及写博客,今天会把它补上!把这个习惯坚持下去! 关于Scala高阶函数详解 1.Scala高阶函数代码实现:高阶函数就是在我们函数中套用函数 2.高阶函数代码详解:高阶函 ...
- 大数据系列修炼-Scala课程04
Scala中继承实现:超类的构造.字段重写.方法重写 关于超类的构建:超类可以在子类没有位置的限制,可以在子类中调用父类的方法 类中字段重写:在重写字段前面加一个override就可以重新赋值 类中方 ...
- 大数据系列修炼-Scala课程08
接下来会讲解关于各种模式匹配,从中就会知道模式匹配的重要性 关于Type.Array.List.Tuple模式解析 1.Type模式匹配代码解析 //关于Type类型的模式匹配 //匹配 Int类型. ...
- 大数据系列修炼-Scala课程02
Scala数组操作实战详解 接着昨天的课程,下面我们继续学习关于Scala数组操作详解.Scala数组的定义 //数组定义 //定长数组格式 /** * val arrayName = new Arr ...
- 大数据系列修炼-Scala课程11
接着昨天的list,也是学习集合的相关知识 ListBuffer.ArrayBuffer.Queue.stack相关操作 1.ListBuffer.ArrayBuffer代码实现:ListBuffer ...
- 大数据系列修炼-Scala课程10
今天主要是关于Scala中对List的相关操作,list在Scala中应该是至关重要,接下来会讲解关于List的一系列操作 List的map.flatMap.foreach.filter操作讲解 1. ...
- 大数据系列修炼-Scala课程05
Scala多重继承.构造器的执行顺序.AOP实现 多重继承的trait实现:Scala中接口可以继承具体的类,trait接口可以实现多重继承,并且某个类也可以继承特定的类,在继承后面可以混入,接口的实 ...
随机推荐
- C#取硬盘、CPU、主板、网卡的序号 ManagementObjectSearcher
原文:C#取硬盘.CPU.主板.网卡的序号 ManagementObjectSearcher private void button1_Click(object sender, EventArgs e ...
- AND信号灯和信号灯集-----同步和互斥解决面向对象(两)
AND信号 互斥的上述处理,它是针对仅在进程之间共享的一个关键资源方面.在一些应用.这是一个过程,需要在为了自己的使命后,获得两个或多个其他共享资源运行. 个进程A和B.他们都要求訪问共享数据D和E. ...
- HTC M7日文版HTL22刷机包 毒蛇2.5.0 ART NFC Sense6.0
ROM介绍 日文版的蝰蛇2.5.0简短的介绍: *根据最新的M8蝰蛇版本号2.5.0 *经过我的朋友和机器测试.功能是否正常,当然,并非所有的功能进行测试,以,假设遇到BUG请反馈 *删除国外社会.谷 ...
- 房费制 之 登录BUG
声明:以下内容只有当你登录到一个username同时,学生不能申请多次登录. 说是BUG,事实上这也不是一个BUG,仅仅是想出一个办法,解决一个大家好多人都没有解决的问题.以下就给大家 ...
- SQL Server 开发利器 SQL Prompt 6.5 T-SQL智能感知分析器 下载地址 完全破解+使用教程
SQL脚本越写越多,总是觉得编写效率太过于低下,这和打字速度无关.在我个人编写SQL脚本时,至少会把SQL的格式排列成易于阅读的,因为其他人会阅读到你的SQL,无论是在程序中或是脚本文件中,良好的排版 ...
- java nio 网络框架实现(转)
maven项目https://github.com/solq360/common 链式编/解码 链路层链式处理 管道管理socket 多协议处理非常方便 仿netty NioEventLoop 单线程 ...
- 由Lucnene 对于预治疗的文字,全角半角转换器(可执行)
这是我第二次读这本书,在自己的学习之间XML,javascript,的深入研究<JAVA 核心技术>. 在当中深入的学习了java的非常多机制. 回头再来看搜索引擎这本书的时候.就认为比第 ...
- PHP之运用CI用钩子实现URL权限控制————————【Badboy】
<span style="background-color: rgb(247, 252, 255); font-family: Verdana, Arial, Helvetica, s ...
- Visual Studio中开发
如何在Visual Studio中开发自己的代码生成器插件 Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代 ...
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...