博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据系列修炼-Scala课程06
阅读量:7061 次
发布时间:2019-06-28

本文共 3058 字,大约阅读时间需要 10 分钟。

关于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

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

你可能感兴趣的文章
连接mysql报错Table ‘performance_schema.session_variables’ ...
查看>>
ACM-ICPC 常用算法刷题网站整理(转)
查看>>
MySQL5.7并行复制乱序提交引起的同步异常
查看>>
Unable to execute dex: Multiple dex files define Lcom/kenai/jbosh/AbstractAttr
查看>>
8月共处理钓鱼网站1862个:非CN域名达1855个
查看>>
网络数据安全
查看>>
Hello World
查看>>
open***
查看>>
开启golang之旅
查看>>
Android TableLayout表格布局
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
购物车--low版
查看>>
linux
查看>>
LINQ分页和排序,skip和Take 用法
查看>>
Activiti 查找流程状态(流程下一步)
查看>>
Angular UI Route
查看>>
一个应届毕业生程序员的独白
查看>>
编译安装ZABBIX客户端(代理)
查看>>
jsp下拉框中显示数据库信息&&jsp 下拉框从数据库中如何取值?
查看>>