首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2021年大数据常用语言Scala(三十三):scala高级用法 模式匹配

---- 模式匹配 scala中有一个非常强大的模式匹配机制,可以应用在很多场景: switch语句 类型查询 以及快速获取数据 简单匹配 在Java中,有switch关键字,可以简化if条件判断语句...,可以使用模式匹配快速获取数据。...、第二个元素的值 val x::y::tail = list println(s"x=$x, y=$y") 匹配样例类 - 常用 scala可以使用模式匹配匹配样例类,从而可以快速获取样例类中的成员数据...- 了解 在scala中,可以很方便地使用正则表达式匹配数据。...scala中提供了Regex类来定义正则表达式,要构造一个RegEx对象,直接使用String类的r方法即可。 建议使用三个双引号来表示正则表达式,不然就得对正则中的反斜杠来进行转义。

71620
您找到你想要的搜索结果了吗?
是的
没有找到

03.Scala:样例类、模式匹配、Option、偏函数、泛型

Scala:样例类、模式匹配、Option、偏函数、泛型 课程目标 掌握样例类的使用 掌握模式匹配使用 1....模式匹配 scala中有一个非常强大的模式匹配机制,可以应用在很多场景: switch语句 类型查询 使用模式匹配快速获取数据 3.1 简单模式匹配 在Java中,有switch关键字,可以简化if条件判断语句...") } 3.4 匹配样例类 scala可以使用模式匹配匹配样例类,从而可以快速获取样例类中的成员数据。...正则表达式scala中,可以很方便地使用正则表达式匹配数据。...提取器(Extractor) 我们之前已经使用scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量。例如: // 1.

2K20

Scala代码编写中常见的十大陷阱

很多Java开发者在学习Scala语言的时候,往往觉得Scala的语法和用法有些过于复杂,充满语法糖,太“甜”了。在使用Scala编写代码,由于语法和编写习惯的不同,很多开发者会犯相同或相似的错误。...用法错误 试图模式匹配一个字符串的正则表达式,而又假定该正则表达式是无界的: val r = """(\d+)""".r val s = "--> 5 <---" s match { case...r(n) => println("This won't match") case _ => println("This will") } 此处的问题在于, 当模式模式匹配Scala...你可能认为”~”是字符串匹配最好的操作符,而其他人可能会使用矩阵等价(matrix equivalence),分析器连接等(符号)。因此,如果你使用它们,请确保你能够很容易的分离其作用域。 8....这是因为fsc运行在背景模式下,通过TCP套接字监听连接来加速编译,而scala却用它来加快脚本的执行速度。 10.风格错误 使用while。虽然它有自己的用处,但大多数时候使用for往往更好。

1K50

Scala教程之:函数式的Scala

文章目录 高阶函数 强制转换方法为函数 方法嵌套 多参数列表 样例类 比较 拷贝 模式匹配 密封类 单例对象 伴生对象 正则表达式模式 For表达式 Scala是一门函数式语言,接下来我们会讲一下几个概念...: 高阶函数 方法嵌套 多参数列表 样例类 模式匹配 单例对象 正则表达式模式 For表达式 高阶函数 高阶函数通常来讲就是函数的函数,也就是说函数的输出参数是函数或者函数的返回结果是函数。...模式匹配 scala使用match关键字和case来做模式匹配,类似java中的switch。...正则表达式模式Scala中,可以使用.r方法将任意字符串变成一个正则表达式。...你还可以使用括号来同时匹配多组正则表达式

76010

一天学完spark的Scala基础语法教程十一、正则表达式(idea版本)

正则表达式 基础案例  查询所有 替换 正则表达式 正则表达式实例 总结 创建测试类【day1/demo11.saclc】,文件类型【Object】 Scala 正则表达式 Scala 通过 scala.util.matching...以下实例演示了使用正则表达式查找单词 Scala :  基础案例  package day1 object demo11 { def main(args: Array[String]) {...你可以使用 mkString( ) 方法来连接正则表达式匹配结果的字符串,并可以使用管道(|)来设置不同的模式: package day1 import scala.util.matching.Regex...,可以使用 replaceFirstIn( ) 方法来替换第一个匹配项,使用 replaceAllIn( ) 方法替换所有匹配项,实例如下: package day1 import scala.util.matching.Regex...+ 匹配 "Ruby"、"Ruby, ruby, ruby",等等 注意上表中的每个字符使用了两个反斜线。这是因为在 Java 和 Scala 中字符串中的反斜线是转义字符。

1K20

scala快速入门系列【正则表达式

本篇作为scala快速入门系列的第三十二篇博客,为大家带来的是关于正则表达式的内容。 ?...---- 正则表达式scala中,可以很方便地使用正则表达式匹配数据。...定义 Regex 类 scala中提供了Regex类来定义正则表达式 要构造一个RegEx对象,直接使用String类的r方法即可 建议使用三个双引号来表示正则表达式,不然就得对正则中的反斜杠来进行转义...findAllMatchIn方法 使用findAllMatchIn方法可以获取到所有正则匹配到的字符串 示例1 定义一个正则表达式,来匹配邮箱是否合法 合法邮箱测试:qq12344@163.com...invalidEmlList) 示例3 有以下邮箱列表 "38123845@qq.com", "a1da88123f@gmail.com", "zhansan@163.com", "123afadff.com" 使用正则表达式进行模式匹配

55430

Python 自动化指南(繁琐工作自动化)第二版:七、使用正则表达式模式匹配

在这一章中,你将首先编写一个程序,在不使用正则表达式的情况下找到文本模式,然后看看如何使用正则表达式使代码不那么臃肿。...使用正则表达式查找电话号码的类似程序也可以在不到一秒钟的时间内运行,但是正则表达式使得编写这些程序更快。...使用正则表达式的更多模式匹配 现在您已经知道了使用 Python 创建和查找正则表达式对象的基本步骤,您已经准备好尝试一些更强大的模式匹配功能了。 用括号分组 假设您想将区号与电话号码的其余部分分开。...通过使用管道字符和分组括号,您可以指定希望正则表达式匹配的几种替代模式。 如果需要匹配一个实际的管道字符,用反斜杠对其进行转义,比如\|。 问号与可选匹配 有时,有一种模式,您只想随意匹配。...同样,您可以在正则表达式的末尾放一个美元符号()来表示字符串必须以这个正则表达式模式结束。您可以同时使用^和来表示整个字符串必须匹配正则表达式——也就是说,仅在字符串的某个子集上进行匹配是不够的。

6.5K40

挑逗 Java 程序员的那些 Scala 绝技

所以在 Scala 中基本上不需要使用工厂模式或构造器模式创建对象,如果对象的创建过程确实非常复杂,则可以放在伴生对象中创建,例如: object User { def apply(name: String...而在 Scala使用模式匹配可以很容易地解决这个问题,下面的代码演示货币类型的匹配: sealed trait Currency case class Dollar(value: Double) extends...case _ => ... } 变量赋值 利用模式匹配,我们可以快速提取特定部分的值并完成变量定义。...Java 的通常做法是使用反射,但是我们知道使用反射是要付出代价的,要承受运行时的性能开销。...而 Scala 则可以在编译为值对象生成隐式的 Json 编解码器,这些编解码器只不过是普通的函数调用而已,不涉及任何反射操作,在很大程度上提升了系统的运行时性能。

2K70

Flink Kafka Connector

当作业从故障中自动恢复或使用保存点手动恢复,这些起始位置配置方法不会影响起始位置。在恢复,每个 Kafka 分区的起始位置由存储在保存点或检查点中的偏移量确定。...如果作业失败,Flink 会从最新检查点的状态恢复流处理程序,并从保存在检查点中的偏移量重新开始消费来自 Kafka 的记录。 因此,检查点间隔定义了程序在发生故障最多可以回退多少。...当使用 Flink 1.3.x 之前的版本,消费者从保存点恢复,无法在恢复的运行启用分区发现。如果要启用,恢复将失败并抛出异常。...2.4.2 主题发现 Flink Kafka Consumer 还能够使用正则表达式匹配 Topic 名称来自动发现 Topic。...在上面的示例中,当作业开始运行时,Consumer 会订阅名称与正则表达式匹配的所有主题(以 test-topic- 开头并以一位数字结尾)。

4.6K30

Scala 特性

函数式编程 Scala也是一种函数式语言,其函数也能当成值来使用Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。...Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。 更进一步,程序员可以利用Scala模式匹配,编写类似正则表达式的代码处理XML数据。...静态类型 Scala具备类型系统,通过编译检查,保证代码的安全性和一致性。...并发性 Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。...在2.10之后的版本中,使用Akka作为其默认Actor实现。 http://www.runoob.com/scala/scala-intro.html

76770

挑逗 Java 程序员的那些 Scala 绝技

来源:http://t.cn/E2Fz6HW 类型推断 字符串增强 集合操作 优雅的值对象 模式匹配 并发编程 声明式编程 面向表达式编程 隐式参数和隐式转换 小结 ---- 有个问题一直困扰着 Scala...而在 Scala使用模式匹配可以很容易地解决这个问题,下面的代码演示货币类型的匹配: sealed trait Currency case class Dollar(value: Double) extends...异步任务可能成功也可能失败,所以我们需要一种既可以表示成功,也可以表示失败的数据类型,在 Scala 中它就是 Try[T]。...Java 的通常做法是使用反射,但是我们知道使用反射是要付出代价的,要承受运行时的性能开销。...而 Scala 则可以在编译为值对象生成隐式的 Json 编解码器,这些编解码器只不过是普通的函数调用而已,不涉及任何反射操作,在很大程度上提升了系统的运行时性能。

1.5K60

Scala:样例类、模式匹配、Option、偏函数、泛型(三)

Scala:样例类、模式匹配、Option、偏函数、泛型 课程目标 掌握样例类的使用 掌握模式匹配使用 1....模式匹配 scala中有一个非常强大的模式匹配机制,可以应用在很多场景: switch语句 类型查询 使用模式匹配快速获取数据 3.1 简单模式匹配 在Java中,有switch关键字,可以简化if条件判断语句...") } 3.4 匹配样例类 scala可以使用模式匹配匹配样例类,从而可以快速获取样例类中的成员数据。...正则表达式scala中,可以很方便地使用正则表达式匹配数据。...提取器(Extractor) 我们之前已经使用scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量。例如: // 1.

2.2K20

Scala语言入门:初学者的基础语法指南

到这就结束了,然后我们就可以在项目里使用Scala了。 新建一个Scala项目,运行Hello Wrold试一下。...通过使用类型模式匹配,我们可以根据不同的值类型来执行相应的逻辑。在每个case语句中,我们使用类型模式匹配匹配特定类型的值。...例如,case str: String 表示当 value 的类型为 String 执行该分支,并将其绑定到变量 str。类似地,其他的 case 语句也使用了类型模式匹配匹配不同的值类型。...正则表达式模型 正则表达式是用来找出数据中的指定模式(或缺少该模式)的字符串。.r方法可使任意字符串变成一个正则表达式。...然后,定义了一个名为validateEmail的方法,它接收一个字符串类型的电子邮件地址作为参数,并使用正则表达式模式匹配来验证电子邮件地址的有效性。

16620

基于flink的电商用户行为数据分析【4】| 恶意登录监控

ListState,设定定时器2秒后触发,查看 ListState 中有几次失败登录 – 更加准确的检测,可以使用 CEP 库实现事件流的模式匹配 既然现在思路清楚了,那我们就尝试将方案落地...定时器触发检查状态中的登录失败事件个数,如果大于等于2,那么就输出报警信息。 在src/main/scala下创建LoginFail.scala文件,新建一个单例对象。...这种做法只能隔2秒之后去判断一下这期间是否有多次失败登录,而不是在一次登录失败之后、再一次登录失败就立刻报警。...b,事件序列[a, c, b1, b2] 匹配为 {a, b1} 非确定性宽松近邻( Non-Deterministic Relaxed Contiguity ) – 进一步放宽条件,之前已经匹配过的事件也可以再次使用...超时事件的提取 当一个模式通过 within 关键字定义了检测窗口时间,部分事件序列可能因为超过窗口长度而被丢弃;为了能够处理这些超时的部分匹配,select和flatSelect API 调用允许指定超时处理程序

92520

Scala语言入门:初学者的基础语法指南

到这就结束了,然后我们就可以在项目里使用Scala了。 新建一个Scala项目,运行Hello Wrold试一下。...通过使用类型模式匹配,我们可以根据不同的值类型来执行相应的逻辑。在每个case语句中,我们使用类型模式匹配匹配特定类型的值。...例如,case str: String 表示当 value 的类型为 String 执行该分支,并将其绑定到变量 str。类似地,其他的 case 语句也使用了类型模式匹配匹配不同的值类型。...正则表达式模型 正则表达式是用来找出数据中的指定模式(或缺少该模式)的字符串。.r方法可使任意字符串变成一个正则表达式。...然后,定义了一个名为validateEmail的方法,它接收一个字符串类型的电子邮件地址作为参数,并使用正则表达式模式匹配来验证电子邮件地址的有效性。

22820

Scala 【 1 介绍篇 】

函数式编程 Scala也是一种函数式语言,其函数也能当成值来使用Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。...Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。 更进一步,程序员可以利用Scala模式匹配,编写类似正则表达式的代码处理XML数据。...静态类型 Scala具备类型系统,通过编译检查,保证代码的安全性和一致性。...并发性 Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。...谁使用Scala 2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala,其余部分也打算要迁移。

23220

Scala语言入门:初学者的基础语法指南

到这就结束了,然后我们就可以在项目里使用Scala了。 新建一个Scala项目,运行Hello Wrold试一下。...通过使用类型模式匹配,我们可以根据不同的值类型来执行相应的逻辑。在每个case语句中,我们使用类型模式匹配匹配特定类型的值。...例如,case str: String 表示当 value 的类型为 String 执行该分支,并将其绑定到变量 str。类似地,其他的 case 语句也使用了类型模式匹配匹配不同的值类型。...正则表达式模型 正则表达式是用来找出数据中的指定模式(或缺少该模式)的字符串。.r方法可使任意字符串变成一个正则表达式。...然后,定义了一个名为validateEmail的方法,它接收一个字符串类型的电子邮件地址作为参数,并使用正则表达式模式匹配来验证电子邮件地址的有效性。

17610

Scala语言入门:初学者的基础语法指南

图片到这就结束了,然后我们就可以在项目里使用Scala了。新建一个Scala项目,运行Hello Wrold试一下。...通过使用类型模式匹配,我们可以根据不同的值类型来执行相应的逻辑。在每个case语句中,我们使用类型模式匹配匹配特定类型的值。...例如,case str: String 表示当 value 的类型为 String 执行该分支,并将其绑定到变量 str。类似地,其他的 case 语句也使用了类型模式匹配匹配不同的值类型。...正则表达式模型正则表达式是用来找出数据中的指定模式(或缺少该模式)的字符串。.r方法可使任意字符串变成一个正则表达式。...然后,定义了一个名为validateEmail的方法,它接收一个字符串类型的电子邮件地址作为参数,并使用正则表达式模式匹配来验证电子邮件地址的有效性。

21620
领券